我试图在 Go 的上下文中更好地理解先发制人和合作的定义。抢占式多任务处理的 Wiki 状态
在计算中,抢占是暂时中断正在执行的任务的行为,目的是稍后恢复它。此中断由外部调度程序完成,无需任务的协助或合作。
Wiki 指出“外部调度程序”。我想这意味着调度程序更具体,因为 afaik 调度程序只负责选择下一个进程。
Go 通常被称为部分抢占,因为同步点/抢占点仅在函数调用处而不是在任何给定指令处。这就说得通了。但正如 wiki 定义所述,抢占式是由外部调度程序完成的。
但是,难道不是每个进程或任务都是抢占式的吗,因为 CPU 可以在执行过程中停止执行任何进程以切换到另一个进程?任何澄清表示赞赏!
我能想到的唯一解释是我们讨论了不同的抢占级别。一种用于进程,一种用于内核/用户线程。在这种情况下,CPU 调度程序选择下一个进程,但 Go 调度程序负责 goroutines/线程。
眼眸繁星
呼如林
慕哥6287543
相关分类