在我的代码中,有三个并发例程。我尝试简要概述一下我的代码,
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
}
我希望在执行两个代码之间的某些操作(两个星号之间的代码)时,控制流一定不能进入其他goroutine。例如,当例程1正在执行两颗星之间的事件(发送和打印事件)时,例程2和3必须被阻止(执行的平均流量不会从例程1传递到例程2或3)。在完成上一个打印事件后,执行流程可能会传递到例程2或3。有人可以通过指定帮助我的方式,我该如何实现呢?是否可以通过WaitGroup来实现上述规范?任何人都可以通过举一个简单的示例向我展示如何使用WaitGroup来实现上面指定的示例。谢谢。
注意:我提供两个发送和两个打印选项,实际上有很多发送和打印功能。
潇湘沐
一只甜甜圈
相关分类