在我的代码中,有三个并发例程。我尝试简要概述一下我的代码,
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
}
我希望在执行两个代码之间的某些操作(两个星号之间的代码)时,控制流一定不能进入其他go例程。例如,当例程1正在执行两颗星之间的事件(发送和打印事件)时,例程2和3必须被阻止(执行流不会从例程1传递到例程2或3)。完成最后一个打印事件后,执行流程可能会传递给例程2或3。有人可以通过指定来帮助我,我该如何实现?是否可以通过WaitGroup来实现上述规范?任何人都可以通过举一个简单的示例向我展示如何使用WaitGroup来实现上述指定示例。谢谢。
注:可能这是重复的问题本。我试图通过使用同步锁机构,但是,可能是因为我有一个大的代码,这就是为什么我不能把锁定-开锁正常,这是创造死锁情况(或者可能是我的方法是错误产生)。任何人都可以通过一个简单的程序来帮助我,这样我就可以实现这一目标。我给我的代码一个简单的例子,在这里,其中在这里我要放两个打印和发送事件内互斥(日常1),从而程序2不能中断它。你能帮我怎么可能。给出了一种可能的解决方案, http://play.golang.org/p/-uoQSqBJKS给出了错误。
慕仙森
慕桂英3389331
相关分类