什么是死锁,Go Corporation中的死锁通常被永久封锁。你抱着我的东西,请我先给你,然后给我。我不会给你。
代码首先:
我们可以看到这是没有缓存的管道,然后在其中编写666,然后转到管道上阅读。肯定会有问题!没有人没有放慢能力,您不能写它,您不能写它,不,不一个写作,你看不懂。这是一个僵局!
解决方案非常简单。打开两个Coroutines,一个Coroutine和一个Coroutine阅读。
我们可以看到,将数字写入管道后,因为没有人阅读,无法编写管道,并且写作在管道中的操作已被阻止。这次,您有疑问。您不是打开Coroutine吗?但是,在将管道打开后,如果无法将其写入管道中,它将无法打开Coroutine。
如果对方首先读/写,请自己阅读/写作,则会造成僵局。
让我们看一下妻子的公司。只要可以阅读哥哥,也就是说,他的妻子有钱,他将发送888的大红色信封。
她的丈夫再次看着我丈夫的coroutine。只要他有钱,他就会打包妻子的大红色信封。
双方都说他们没有钱,她的丈夫无法为他的妻子发送红色信封,他的妻子也无法为丈夫发送红色信封。这是一个僵局!
让我们首先看一下代码:
如果第一个Coroutine,则仅在第一个编写锁定时才会抓住第一个Coroutine,则不能抓住唯一的读锁,因此,因为其他coroutine未读取,因此无法写下第一个Coroutine
如果第二个Coroutine首先被抓住以阅读锁,而另一个Coroutine无法抓住唯一的锁,则由于未写下另一个Coroutine,因此无法读取第二个Coroutine。
作者:Reganyue