2012년 4월 29일 일요일

channel


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
}