在多线程进程中,如果一个线程忙于I/O,整个进程是否会被阻塞?
AFAIK,它完全依赖于程序员,他们如何管理程序中的线程.如果另一个线程没有I/O,处理器将永远不会空闲并开始执行此线程.但是,在拆分线程中进行处理,使得一个线程等待另一个线程的结果,整个进程将被阻止.
如果需要添加更多信息,请评论.还有其他解释吗?
如果进程只有一个线程,那么是.
如果进程有多个线程,那么如果操作系统支持多线程,则通常为no.
这个问题也可以通过用户线程的底层实现来解决.多线程模型有不同的模型,为了实现用户线程,必须将它们映射到内核线程:
多对一:许多用户线程到一个内核线程
一对一:将每个用户线程分配给内核线程.
多对多:许多用户线程在不同的内核线程上分开.
在多对一的情况下,线程内的单个块操作(系统调用)可以阻止整个过程.这种缺点不存在于一对一模型中.
| 归档时间: |
|
| 查看次数: |
2147 次 |
| 最近记录: |