猿问

Go中并发例程的打印问题

我有三个这样的并发例程,


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过程实现这些方法。


关于我的这个问题的更多信息可以在这里找到。


SMILET
浏览 356回答 1
1回答
随时随地看视频慕课网APP

相关分类

Go
我要回答