출처: http://tour.golang.org/#62
channel 한번 더보자.
channel 하나를 다수의 goroutine 에서 재사용이 가능하다는 얘기인가.
하나의 channel 은 사용이 완료될때까지 완전히 block 된다.
두개의 goroutine 에서 동시에 하나의 channel 을 쓸수는 없을것이다.
package main
import (
"fmt"
)
func sum(a []int, c chan int) {
sum := 0
for _, v := range a {
sum += v
}
c <- sum
}
func main() {
a := []int {7, 2, 8, -9, 4, 0}
c:= make(chan int)
go sum( a[:len(a)/2], c)
go sum( a[len(a)/2:], c)
x, y := <-c, <-c
fmt.Println(x, y, x + y)
}
D:\DEV\PP\work_4\src>go run hello70.go
17 -5 12