我对用户级线程阻塞有些困惑。我们知道一个用户级线程阻塞导致整个进程被阻塞,那么为什么“响应性”是多线程的好处之一呢?在Silberschatz“操作系统概念”一书中给出:
交互式应用程序中的多线程可能允许程序 即使部分内容被阻止或正在执行,也会继续运行 冗长的操作,从而提高对用户的响应能力。
这仅仅是指内核级线程还是我无法理解的东西?
所以,问题是,当一个用户级线程阻塞导致整个进程被阻塞时,响应能力如何成为线程的优势?
答案 0 :(得分:2)
所以,问题是,当一个用户级线程阻塞导致整个进程被阻塞时,响应能力如何成为线程的优势?
用户级线程仅在两种情况下阻止:
当他们遇到页面错误或线程库无法处理的其他情况时。
当整个过程无法取得进展时。
这是用户级线程实现的主要工作 - 采用通常会阻塞并用非阻塞版本替换它们的函数,以便其他用户级线程可以向前推进。
这仍然意味着如果任何用户级线程遇到页面错误,整个过程都无法在向页面错误提供服务之前继续前进。
答案 1 :(得分:1)
使用用户级线程,实际线程永远不会阻塞 - 任何可能阻止的操作都会被拦截,而非阻塞等效操作则会被阻止。如果用户级别线程DID阻塞,如你所知,它会无意中阻塞其他线程,这是破坏的。
答案 2 :(得分:0)
我对用户级线程阻塞有些困惑。我们知道一个用户级线程阻塞导致整个进程被阻塞,那么为什么“响应性”是多线程的好处之一呢?
仅在某些操作系统上才是这样。
所以,问题是,当一个用户级线程阻塞导致整个进程被阻塞时,响应能力如何成为线程的优势?
开发“用户线程”时广泛使用的系统通常会有软件中断,阻止整个线程被阻塞。
现在,任何值得盐的操作系统都有真正的线程,而“用户线程”是时代和操作系统的遗留物,并没有跟上。