如果一个线程忙于I / O,则会阻止整个进程

时间:2012-06-10 04:50:27

标签: operating-system

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

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

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

1 个答案:

答案 0 :(得分:6)

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

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

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

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

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

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

多对一的情况下,线程中的单个块操作(系统调用)可以阻止整个过程。 一对一模型中不存在此缺点。