2012년 5월 1일 화요일

channel

출처: 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