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

Gre*_*lin 4 operating-system

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

AFAIK,它完全依赖于程序员,他们如何管理程序中的线程.如果另一个线程没有I/O,处理器将永远不会空闲并开始执行此线程.但是,在拆分线程中进行处理,使得一个线程等待另一个线程的结果,整个进程将被阻止.

如果需要添加更多信息,请评论.还有其他解释吗?

Kon*_*che 6

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

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

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

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

  • 一对一:将每个用户线程分配给内核线程.

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

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