Goroutines 作为 Go 的轻量级线程,对于并发性至关重要。了解它们何时让出控制对于优化代码性能至关重要。
传统抢占点
以前,goroutines 仅在特定点让出,包括:
异步抢占(Go 1.14 )
Go 的 1.14 版本引入了异步抢占,这意味着 goroutine 现在几乎可以在任何地方让出控制权。这可以降低死锁和延迟的风险。
示例中的抢占点
问题中提供的示例代码不包括函数调用或阻塞系统调用。但是,输出仍然显示消息交错,表明 goroutine 正在让步。
抢占的可能原因
结论
在 Go 程序中,goroutines 现在几乎可以在任何时候异步地让出控制权 观点。这是对需要特定抢占点的早期版本的改进。然而,重要的是要意识到垃圾收集的潜在影响以及其他可能影响 goroutine 调度的因素。
以上是Go 中 Goroutines 何时屈服:同步抢占与异步抢占?的详细内容。更多信息请关注PHP中文网其他相关文章!