上下文在进程中的线程之间切换

时间:2012-05-29 14:13:19

标签: multithreading kernel scheduling

  

对于Kernel-Level-Threads,当一个线程阻塞某些I / O时,另一个线程可以自由运行,但是在User-Level-Threads中如果一个线程被阻塞会发生什么?

该进程是否会被阻止,即没有其他线程会执行或其他线程将被安排运行。究竟发生了什么?

1 个答案:

答案 0 :(得分:3)

用户级线程是以顺序方式执行的用户代码片段 - 一个线程运行一段时间然后将控件传输到另一个线程,依此类推。如果其中一个线程发出阻塞的系统调用,那么整个进程就会阻塞。用户级线程看起来像是内核的单线程进程。不可能在多个CPU上进行并发调度。

内核级线程的主要优点是它们彼此独立运行,可以在不同的CPU上进行调度。如果一个阻止,其他人继续执行。