打印到stdout会导致阻塞的goroutine运行?

打印到stdout会导致阻塞的goroutine运行?,第1张

打印到stdout会导致阻塞的goroutine运行?

问题是Go的调度程序的实现方式。当前goroutine仅在进行系统调用或阻塞通道 *** 作时才能屈服于其他goroutine。

fmt.Println
进行系统调用,使goroutine有机会屈服。否则它没有一个。

在实践中,这通常并不重要,但是对于这样的小问题,有时可能会出现。

另外,在通道上进行非阻塞发送的一种更惯用,更省事的方法是:

func customer(id int, shop chan<- int) {    // Enter shop if seats available, otherwise leave    select {    case shop <- id:    default:    }}

您这样做的方式是,客户可能最终在理发店外面等了,因为到您实际进行发送时,

len(shop)
可能已经改变了。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5126160.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存