我有三个这样的并发例程,
func Routine1() {
Print (value a, value b, value c)
Print (value a, value b, value c)
Print (value a, value b, value c)
}
func Routine2() {
Print (value e, value f, value g)
Print (value e, value f, value g)
Print (value e, value f, value g)
}
func Routine3() {
Print (value x, value y, value z)
Print (value x, value y, value z)
Print (value x, value y, value z)
}
func main() {
go Routine1(command12, response12, command13, response13)
go Routine2(command12, response12, command23, response23)
Routine3(command13, response13, command23, response23)
}
现在,我面临的问题是,由于三个并发例程的结果,有时会发生某些情况,有时print语句执行不正确,这意味着无法整体打印,另一幅打印插入了某些东西。例如,例程1的Print(值a,值b,值c)给出的输出类似于值a,值b,值g,其中值g由例程2插入。有人可以建议我如何停止它?我已经尝试过同步互斥程序。但是,可能是因为我的代码太长,可能是因为我无法以正确的方式进行锁定解锁,所以它给出了死锁错误。有人可以建议我如何以简单的方式或以风险较小的sync-mutex过程实现这些方法。
关于我的这个问题的更多信息可以在这里找到。
相关分类