在多线程进程中,如果一个线程忙于I / O,整个进程是否会被阻塞?
AFAIK,完全取决于程序员他们如何管理程序中的线程。 如果没有I / O的另一个线程,处理器永远不会闲置&开始执行这个线程。但是,在拆分线程中进行处理,以便一个线程等待另一个线程的结果,整个进程将被阻止。
如果需要添加更多信息,请发表评论。 是否还有其他解释?
答案 0 :(得分:6)
如果进程只有一个线程,那么是。
如果进程有多个线程,那么如果操作系统支持多线程,则通常为no。
这个问题也可以通过用户线程的底层实现来解决。多线程模型有不同的模型,为了实现用户线程,必须将它们映射到内核线程:
多对一:一个内核线程的许多用户线程
一对一:每个用户线程都分配给内核线程。
多对多:许多用户线程在不同的内核线程上分开。
在多对一的情况下,线程中的单个块操作(系统调用)可以阻止整个过程。 一对一模型中不存在此缺点。