我试图在围棋的背景下更好地理解preemptive和cooperative的定义.维基百科全书
在计算中,抢占是暂时中断正在执行的任务的行为,目的是在以后恢复它.此中断由external调度器完成,不需要任务的协助或合作.
维基声明"外部调度器".我猜它的意思是调度程序更具体,因为AFAIK调度程序只负责 Select 队列中的下一个进程.
GO通常被称为partially抢占,因为同步点/抢占点仅在函数调用处,而不在任何给定指令处.这事儿可以理解.但正如维基定义所述,抢占是由外部调度器完成的.
但是,由于CPU可以在执行过程中停止执行任何进程以切换到另一个进程,难道不是每个进程或任务都是抢占式的吗?如有任何澄清,我们不胜感激!
增编
我能想到的唯一解释是,我们谈论的是不同的抢占水平.一个用于进程,另一个用于内核/用户线程.在这种情况下,CPU调度器 Select 下一个进程,但go调度器负责Goroutines/线程.