私のコードには、3つの同時ルーチンがあります。私は自分のコードの概要を簡単に説明しようとしていますが、
Routine 1 {
do something
*Send int to Routine 2
Send int to Routine 3
Print Something
Print Something*
do something
}
Routine 2 {
do something
*Send int to Routine 1
Send int to Routine 3
Print Something
Print Something*
do something
}
Routine 3 {
do something
*Send int to Routine 1
Send int to Routine 2
Print Something
Print Something*
do something
}
main {
routine1
routine2
routine3
}
2つの間のコード(2つのスターマーク間のコード)が実行されている間、制御のフローは他のgoルーチンに移動してはなりません。たとえば、routine1が2つのスター間のイベント(送信イベントと印刷イベント)を実行している場合、ルーチン2と3をブロックする必要があります(つまり、実行フローはルーチン1からルーチン2または3に渡されません)。最後の印刷イベントが完了した後、実行の流れはルーチン2または3に渡される可能性があります。誰かが指定することで私を助けてくれますか、どうすればこれを達成できますか?WaitGroupで上記の仕様を実装することは可能ですか?WaitGroupを使用して上記の例を実装する簡単な例を挙げて、誰かに教えてもらえますか。ありがとう。
NB:これはこれの繰り返しの質問かもしれません。そのsync-lockメカニズムを使用して試しましたが、コードが大きいためにlock-unlockを適切に設定できず、デッドロック状態が発生している可能性があります(または私の方法でエラーが発生している可能性があります)。誰かが簡単な手順で私を助けてくれるので、私はこれを達成することができます。ここに私のコードの簡単な例を示します。ここでは、2つのプリントを配置し、ミューテックス内にイベントを送信します(ルーチン1の場合)。したがって、ルーチン2はそれを中断できません。どうすればそれが可能か教えてくれませんか。与えられた1つの可能な解決策、 エラーを与えるhttp://play.golang.org/p/-uoQSqBJKS 。