协作式多任务处理和抢占式多任务处理有什么区别?

问题描述 投票:0回答:1

最近我了解了螺纹与纤维的不同之处。 This回答说

线程使用抢先调度,而光纤使用协作调度。

为了获得有关合作多任务与抢占式多任务的更多信息,没有关于SO的具体帖子。希望这个问题有助于获得有关该主题的所有信息。

operating-system multitasking
1个回答
2
投票

简短回答:

抢占:线程不决定何时运行并被迫共享CPU

协作:每个线程,一旦运行决定保持CPU的时间,以及何时放弃,以便另一个线程可以使用它。

答案很长

先发制人

表示线程无法控制它们何时和/或使用CPU并运行多长时间。调度程序(操作系统的一个组件)随时决定哪个线程可以运行以及哪个线程必须休眠。您对下一次线程运行时的持续时间以及持续时间没有强有力的保证。这完全取决于调度程序。

合作社

在协作式多任务处理中,发生的事情是调度程序在线程何时可以运行时没有发言权。每个线程决定它保持CPU的时间。如果它决定不与任何其他线程共享CPU,那么没有其他线程会运行导致所谓的饥饿。

请注意,停止一个线程并启动另一个线程会产生一定的开销。这意味着您花费时间和资源不执行任务中的代码,但纯粹是为了允许共享CPU。在某些实时场景中,这可能是非常不可接受的。

© www.soinside.com 2019 - 2024. All rights reserved.