Возможно ли в ходу:
Предположим, у меня есть 3 одновременных подпрограммы, которые могут отправлять друг другу целые числа. Теперь предположим, что обе параллельные подпрограммы 2 и 3 отправляют целое число в параллельную подпрограмму 1. Возможно ли, что в подпрограмме 1 обе величины принимаются и обрабатываются дальше? Чтобы было понятно, у меня есть следующий код:
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 может отправить int в подпрограмму 2 или 3. Я предполагаю, что это подпрограмма 3. Теперь предположим, что подпрограмма 3 также отправляет int в подпрограмму 2. Возможно ли, чтобы подпрограмма 2 взяла эти два значения и процесс дальше (динамические параллельные процедуры)? Может ли любой орган помочь изменить эту программу соответственно.