在我的代码中有三个并发例程。我尝试简要概述我的代码,
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 例程。例如,当routine1正在执行两颗星之间的事件(发送和打印事件)时,必须阻塞例程2和3(意味着执行流程不会从例程1转到例程2或3)。完成最后一个打印事件后,执行流程可能会传递给例程 2 或 3。任何人都可以通过指定来帮助我,我该如何实现?是否可以通过 WaitGroup 实现上述规范?任何人都可以通过给出一个简单的例子来告诉我如何使用 WaitGroup 来实现上述指定的例子。谢谢。
注意:可能这是重复的问题。但是,我尝试使用该同步锁定机制,这可能是因为我的代码很大,这就是为什么我无法正确放置锁定解锁的原因,并且它正在造成死锁情况(或者可能是我的方法产生错误)。任何人都可以通过一个简单的程序帮助我,这样我就可以做到这一点。我在这里给出了我的代码的一个简单示例,在这里我想在互斥锁中放置两个打印和发送事件(对于例程 1),因此例程 2 不能中断它。你能帮助我怎么可能。给出了一种可能的解决方案, http ://play.golang.org/p/-uoQSqBJKS给出了错误。