multithreading - 用户级线程会利用多处理吗?

标签 multithreading process operating-system multiprocessing

用户级线程会利用多处理吗?我在这里读到了这样一个答案。但是,目前还不清楚。

What does it mean by "user threads cannot take advantage of multithreading or multiprocessing"?

还有一个答案在这里说,这是可能的

How do user level threads (ULTs) and kernel level threads (KLTs) differ with regards to concurrent execution?

我是否在这里缺少一些重要细节?

最佳答案

通常,user-level threads不能利用多处理,而kernel-level threads可以利用它。

这只是意味着我们可以在kernel-level threads计算机系统上并行运行多个multi-core。但是,对于user-level threads则无法做到这一点。

这是可能的,因为kernel-level threadsOperating System管理,而user-level threads由用户管理,这意味着OS实际上仅知道一个user-level thread(正在执行的一个),即使实际上有多个。

现在,在您的链接中,您提供了以下内容:

Some implementations base their user threads on top of several kernel 
threads, to benefit from multi-processor machines (M:N model). 

根据我阅读链接后的了解,只有实现特定于的情况下,user-level threads才有可能利用multiprocessing。因此,这基本上就像是与kernel-level thread关联的core和与相应user-level thread关联的kernel-level thread一样。

所以最后,它的kernel-level threads毕竟在several cores(OR CPU's)上并行运行。没有multiprocessing的任何帮助,我们无法利用kernel

关于multithreading - 用户级线程会利用多处理吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41647778/

相关文章:

windows - Windows 中的 "Job"(子进程)是什么,何时使用它?

operating-system - 如何判断 SP1 是否安装在 Windows Server 2008 R2 Standard 上?

operating-system - 压缩和碎片整理有什么区别?

C# 返回 ConcurrentBag 的副本

c# - 如何使两个SQL查询真正异步

c++ - GetModuleFileNameEx - 拆分输出

c# - Windows 服务如何在引发计时器事件时启动进程?

unix - Windows 中的 Win 32 API 等 UNIX 的 API 是什么?

c++ - 线程类成员函数;通过初始化列表进行线程初始化

C#WPF UI在UI线程中更新数据时挂起