goroutine 이 종료되었을때, 종료보고기능을 위해서 channel 이 필요하다.
channel 은 make 함수를 사용하여 생성한다.
channel 은 통신기능은 물론, 동기화기능까지 제공한다.
나는 "종료보고기능"을 C++, C# 으로 구현해보려 했으나 만족할 만한 답을 찾지 못했다.
개인적인 견해로는, 통신 또는 데이터 공유와 동기화 기능이 하나로 합쳐져야 한다는 생각에는 전적으로 동의한다.
이런 기능이 뼈대로 제공되어야, 응용소프트웨어 분야에서 혁신이 나올 수 있다.
package main
import "fmt"
func main() {
c := make(chan int) // allocate a channel.
go func() {
fmt.Println( "goroutine 3")
c <- 1 // send a signal; value does not matter
} ()
fmt.Println( "output 3")
<-c // wait for finish; discard sent value
}