加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

多线程 – 混合线程模型(M:N)实现

发布时间:2020-12-15 00:39:36 所属栏目:Java 来源:网络整理
导读:通常由OS内核完成的线程调度实现中使用了 three个线程模型.其中之一是混合(M:N)模型,其中一些N个应用程序线程映射到M个内核线程,因此它们可以使用多达M个处理器.这种模式有利有弊.其中一个优点是基于此模型的语言将引入语言级调度程序实现,该实现负责管理和
通常由OS内核完成的线程调度实现中使用了 three个线程模型.其中之一是混合(M:N)模型,其中一些N个应用程序线程映射到M个内核线程,因此它们可以使用多达M个处理器.这种模式有利有弊.其中一个优点是基于此模型的语言将引入语言级调度程序实现,该实现负责管理和调度应用程序级线程.

>我想知道是否有人知道任何努力或已经完成此项工作,以便语言或图书馆可以利用它?
>考虑到例如Kernel 2.6.23使用一种称为CFS的算法进行调度这一事实,您是否认为这种混合模型完全是一种明智的投资方式?

解决方法

首先阅读: http://www.kegel.com/c10k.html#1:1

Linux使用从内核2.6(NPTL Native Posix线程库)开始的1:1线程模型,而今天几乎所有操作系统都转移到此模型:

>如果我没弄错的话,FreeBSD从7.0开始.
>某些版本的Solaris也开始转移到1:1 – 我不记得是哪一个.

一旦Linux拥有M:N模型(这是在2.4 NGPT中),但1:1通常是优越的.

M:N模型的最大问题是:

>难以实施
>当使用阻塞系统调用时,实际上需要通知某个内核只阻塞一个用户空间线程而不是内核一个
>在多核时代,您希望拥有尽可能多的内核线程.

One of them is the hybrid (M:N) model in which some N threads of an application are mapped to some M available processors.

小修正 – N个应用程序线程映射到M个内核线程,因此它们可以使用多达M个处理器.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读