golang 使并发更容易的主要原因

我的理解大致在下面吗?

  • go大多是检测dead lock在编译时。

  • go可以使用chan,以尽量减少race condition是因为只有单一的发送者或接收者goroutine可以访问任何特定chan的时刻。


慕妹3242003
浏览 146回答 3
3回答

眼眸繁星

我不会说那是准确的。在第一点上,没有关于死锁的任何编译时保证,如果您使用互斥锁不当,您将死锁,没有编译器可以防止这种情况。您可以轻松测试竞争条件,但这是不同的。在第二点上,通道序列化了您的异步操作,但我认为您如何表述它没有多大意义。一堆 goroutine 可以写入和读取它。这就像一个队列来放入数据,没有协调性。您不会因为多个例程同时读取或写入而感到恐慌,但是如果发生这种情况,Go 没有做任何事情来使您的程序正常运行,您必须使用通道自己协调例程。

皈依舞

不,第一个是完全错误的,第二个至少说不清楚或奇怪。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go