4

在多线程进程中,如果一个线程忙于I/O,整个进程会被阻塞吗?

AFAIK,这完全取决于程序员他们如何管理程序中的线程。如果另一个线程没有 I/O,处理器将永远不会闲置并开始执行该线程。但是,在拆分线程中的进程使得一个线程等待另一个线程的结果,整个进程将被阻塞。

如果需要添加更多信息,请发表评论。是否存在任何其他解释?

4

1 回答 1

6

如果进程只有一个线程,那么是的。

如果进程有多个线程,那么如果操作系统支持多线程,则通常不会。

这个问题也可以根据用户线程的底层实现来解决。多线程模型有不同的模型,为了实现用户线程,它们必须映射到内核线程:

  • 多对一:多用户线程到一个内核线程

  • 一对一:每个用户线程都分配给一个内核线程。

  • 多对多:许多用户线程被分割在不同的内核线程上。

多对一的情况下,线程内的单个阻塞操作(系统调用)可以阻塞整个进程。这种缺点在一对一模型中不存在。

于 2012-06-10T06:49:49.427 回答