用户级线程是否利用多处理?我在这里读了一个这样的答案。但是,目前尚不清楚。
What does it mean by "user threads cannot take advantage of multithreading or multiprocessing"?
这里的另一个答案说可能
我在这里遗漏了一些重要的细节吗?
答案 0 :(得分:2)
通常,user-level threads
无法利用多处理,而kernel-level threads
可以利用它。
这只是意味着我们可以在kernel-level threads
计算机系统上并行运行多个multi-core
。但user-level threads
无法做到同样的事情。
这是可能的,因为kernel-level threads
由Operating System
管理,而user-level threads
由用户管理,这意味着操作系统只知道单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
。
答案 1 :(得分:0)
这取决于你如何定义"利用。"
用户线程由进程调度。 该过程由内核安排。
然后,用户线程只能在安排进程的进程上执行。
因此,来自同一进程的用户线程不能同时在多个处理器上执行。它们执行交错。
如果这是您对多处理的定义,那么您的答案是否定的。
但是,如果操作系统支持,则该进程可以在任何可用的处理器上执行。因此,用户线程可以在任何可用的处理器上执行。
如果这是您对多处理的定义,那么您的答案是肯定的。