Multithreading 混合线程模型(M:N)实现
线程调度实现中使用的线程模型通常由操作系统内核完成。其中之一是混合(Multithreading 混合线程模型(M:N)实现,multithreading,language-design,multicore,Multithreading,Language Design,Multicore,线程调度实现中使用的线程模型通常由操作系统内核完成。其中之一是混合(M:N)模型,其中一些N应用程序线程映射到M内核线程,以便它们最多可以使用M处理器。这种模式有优点也有缺点。其优点之一是基于此模型的语言将引入一个语言级调度器实现,该实现负责管理和调度应用程序级线程 我想知道是否有人知道有什么努力或工作已经做到了这一点,以便语言或库可以利用它 例如,考虑到kernel2.6.23+使用一种称为CFS的算法进行调度,您认为这种混合模型是一种明智的投资方式吗 首先请阅读以下内容: Linux从内核
M:N
)模型,其中一些N
应用程序线程映射到M
内核线程,以便它们最多可以使用M
处理器。这种模式有优点也有缺点。其优点之一是基于此模型的语言将引入一个语言级调度器实现,该实现负责管理和调度应用程序级线程
- 我想知道是否有人知道有什么努力或工作已经做到了这一点,以便语言或库可以利用它
- 例如,考虑到kernel2.6.23+使用一种称为CFS的算法进行调度,您认为这种混合模型是一种明智的投资方式吗
- 如果我没弄错的话,FreeBSD从7.0开始
- Solaris启动的某些版本也移到了1:1-我不记得是哪一个
- 难以实施
- 当使用阻塞系统调用时,实际上需要通知内核只阻塞一个用户空间线程,而不是内核线程
- 在多核时代,您希望拥有尽可能多的内核线程 其中之一是混合(M:N)模型,其中应用程序的一些N个线程映射到一些M个可用处理器
- 首先请阅读以下内容:
Linux从内核2.6(NPTL本机Posix线程库)开始使用1:1线程模型,现在几乎所有操作系统都采用这种模型:
小修正-N个应用程序线程映射到M个内核线程,这样它们最多可以使用M个处理器。这个问题是在2010年提出的。现在我们可以说golang使用了M:N thead模型。b、 t.w我正在搜索goroutine如何实现和遇到此页面的详细信息。