이동 중에도 가능합니까? 서로 정수를 전송할 수있는 3 개의 동시 루틴이 있습니다. 이제 동시 루틴 2 2가 모두 동시 루틴 1에 정수를 전송한다고 가정하십시오. 루틴 1이 두 값을 모두 취하여 더 멀리 처리 할 수 있습니까? 루틴 3도 int를 보내, 나는 3. 이제 가정 일과 가정Google Go 언어의 동시 루틴
package main
import "rand"
func Routine1(command12 chan int, response12 chan int, command13 chan int, response13 chan int) {
for i := 0; i < 10; i++ {
i := rand.Intn(100)
if i%2 == 0 {
command12 <- i
}
if i%2 != 0 {
command13 <- i
}
print(<-response13, " 1st\n");
}
close(command12)
}
func Routine2(command12 chan int, response12 chan int, command23 chan int, response23 chan int) {
for i := 0; ; i++ {
x, open := <-command12
if !open {
return;
}
print(x , " 2nd\n");
y := rand.Intn(100)
if i%2 == 0 {
command12 <- y
}
if i%2 != 0 {
command23 <- y
}
}
}
func Routine3(command13 chan int, response13 chan int, command23 chan int, response23 chan int) {
for i := 0; ; i++ {
x, open := <-command13
if !open {
return;
}
print(x , " 3nd\n");
y := rand.Intn(100)
response23 <- y
}
}
func main() {
command12 := make(chan int)
response12 := make(chan int)
command13 := make(chan int)
response13 := make(chan int)
command23 := make(chan int)
response23 := make(chan int)
go Routine1(command12, response12,command13, response13)
Routine2(command12, response12,command23, response23)
Routine3(command13, response13,command23, response23)
}
여기서, 1 일과 2 또는 3에 int를 보낼 수있는 루틴이 예에서 : 나는 다음 코드 한이 명확하게하려면 루틴 2는 루틴 2가이 두 값을 취하여 더 처리 할 수 있습니까 (동적 동시 루틴)? 어떤 몸이라도이 프로그램을 적절하게 수정할 수 있습니까?
가능한 중복 (http://stackoverflow.com/questions/8232422/concurrent을 :) 단순화 할 수 -routines-in-go) –