go Routine1(command12, response12,command13, response13 )
go Routine2(command12, response12,command23, response23) // go routine
Routine3(command12, response12,command23, response23 )
Это запустит Routine1 в новой goroutine, а основная goroutine продолжится со следующего оператора.Следовательно, Рутина1 и Рутина2 будут выполняться одновременно, но Рутина3 будет запущена после завершения Рутины2.Вы можете пропустить еще одно утверждение "go" здесь.
Затем я пытался следовать вашей программе.В Routine1 вы делаете
command13 <- y
. Это блокирует Routine1, пока не будет готова другая программа, которая сможет принять ваше сообщение.Поэтому вам нужно y := <-command13
в другой программе.
Но теперь давайте внимательно рассмотрим параметры двух других программ:
Routine2(command12, response12,command23, response23)
Routine3(command12, response12,command23, response23 )
Как вы видите, ни одна из программимеет доступ к команде 13 (но вы передаете команду 12 дважды).Таким образом, ни Routine1, ни Routine2, ни Routine3 не могут продолжить.Тупик!
Я бы порекомендовал вам вернуться к чертежной доске.Подумайте сначала о том, что вы пытаетесь сделать, нарисуйте несколько диаграмм об ожидаемом потоке сообщений, а затем попробуйте реализовать это поведение.
В настоящий момент действительно сложно отладить вашу программу,
- Я не знаю, что вы пытаетесь сделать.Нет подробного описания потока сообщений или чего-либо подобного.Фактически, ваш код вообще не содержит никакой документации.
- Вы передаете каналы, которые называются
response23
, параметру response13
и так далее.Смешать их довольно легко. - Все эти родовые имена, такие как command12 и т. Д., Затрудняют понимание того, что этот канал должен делать
- Хорошая идея
gofmt
вашего источникакод перед публикацией:)
В качестве отправной точки я могу порекомендовать вам пример "простых чисел" из учебника Go .В этом примере возможные простые числа передаются из одной программы в другую.Кроме того, этот пример также содержит хорошую графику потока сообщений и некоторые действительно хорошие объяснения.Вам это может понравиться.