【问题标题】:If one thread is busy on I/O will the entire process be blocked如果一个线程忙于 I/O 会阻塞整个进程
【发布时间】:2012-06-10 04:50:26
【问题描述】:

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

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

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

【问题讨论】:

  • 在您给自己的答案中,您是在问题没有揭示的背景下做出假设。

标签: operating-system


【解决方案1】:

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

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

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

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

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

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

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

【讨论】:

  • 听说这也要看线程是用户级还是内核级,有没有道理?
  • @Aashish 查看我编辑的答案,也许这并不完全符合您的要求,它与用户线程的实现有关。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-03
  • 2016-07-11
  • 2015-04-27
相关资源
最近更新 更多