据我所知,在多对一映射中,一个内核线程管理多个用户线程。这个内核线程帮助用户线程进行系统调用等。我不明白的是:
- 如果一个阻塞调用阻止内核线程管理的所有用户线程
- 在用户线程到内核线程的多对一映射中,执行用户线程必须来自同一进程
- 在多对一映射中,是否可以在不同的上运行所有用户线程核心/CPU同时运行还是一次只运行其中一个
1) 如果一个阻塞调用阻止内核线程管理的所有用户线程?
一对一映射的缺点是,当线程之间有上下文切换时,会涉及内核。内核的参与导致了一些开销。
2) 在用户线程到内核线程的多对一映射中,执行所有操作用户线程必须来自同一进程?
是
3) 在多对一映射中,是否可以在不同的上运行所有用户线程核心/CPU同时运行还是一次只运行其中一个?
多线程映射的主要特点是,整个线程上下文切换由您使用的用户级线程库维护,就内核而言,它不知道您有多少线程,它给进程一个执行的时间片,由线程库来控制任何线程。由此,您可以很容易地看到,在任何时刻的多对一映射中,只有进程的一个线程可以获得控制。