M:N(混合)线程的目的是什么?


12

换句话说,混合线程与1:1(仅内核)和N:1(仅用户)线程相比有什么优势?

这是用户级线程和内核级线程之间的区别是什么?


1
请简短地解释概念或链接到适当的参考。
拉斐尔

3
嗯,您同时获得了两者的好处?(@Raphael Done。)
吉尔斯(Gilles)'所以别再邪恶了'

同样,维基百科的文章似乎列出了一些(不利)优势。您到底在寻找什么?
拉斐尔

Answers:


7

我认为混合线程与线程池非常相似。

在线程池中,您正在使用内核线程来执行 “任务”,其中可以比高得多。与每个任务使用一个线程(仅用于内核的线程)相比,优点是消耗更少的资源,例如内存(虚拟和物理)和内核对象(至少在Windows线程的特定情况下如此),但是我想其他操作系统也是如此在这方面)。您还可以获得较少的上下文切换,从而提高了性能(在理想情况下,运行线程与处理器数量一样,可能几乎没有上下文切换)。NMMN

与仅用户线程相比,优点是您可以利用多个CPU或多个CPU内核。而且,如果一个任务被阻止,则可以创建另一个内核线程来更有效地使用可用的CPU。

因此,您将获得这两种方法的优势,但会牺牲一些额外的用户模式调度。

相对于仅内核调度而言,一个缺点可能是更大的延迟:如果池中的所有线程都忙,并且您添加了新的短任务,则可能需要等待很长时间才能开始执行。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.