concurrency - Go 如何决定何时在 goroutine 之间进行上下文切换?

标签 concurrency go goroutine

我很好奇 Go 语言是如何调度 goroutines 的。它是仅在 channel 请求和 I/O 期间切换还是有周期性的协程切换循环?

最佳答案

Go 还没有抢占式调度器,但有一个是 planned for 1.2 .所以不,Go 不会在纯 CPU 计算期间切换上下文,仅在 I/O 期间(如果内存不在寄存器中,则从内存读取也被视为 I/O)。您可以在 Issue 543 - preemptive scheduling 中阅读有关它的一些讨论。 .

关于concurrency - Go 如何决定何时在 goroutine 之间进行上下文切换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18545595/

相关文章:

python - 在多处理循环中捕获异常

go - 如何检查 URL 参数是否存在

arrays - 我正在尝试对来自流的字节进行突变,因为进行解码,但是它不起作用

parallel-processing - goroutines 在多核处理器上的表现如何

java - Java中如何异步调用方法

java - 是否有可能在 Java 中有效地实现 seqlock?

java - 与执行程序服务卡住的混淆

java - 一个对象中的图形正在影响另一个对象的图形 - JAVA

go - 未实现的 desc = 未知服务 protos.ChaincodeSupport

go - 第一个协程示例,奇怪的结果