当一个线程被阻塞时,会导致在同一个进程或整个进程中阻塞另一个线程吗?

时间:2011-02-09 15:36:21

标签: multithreading process operating-system dependencies block

当线程被阻塞时,该线程是否有必要阻止同一进程或其进程中的任何其他线程?每次都会发生这种情况吗?

3 个答案:

答案 0 :(得分:1)

不确定。如果不是这样,我们就不必处​​理僵局。方案是被阻塞的线程获取了另一个线程也试图获取的同步对象。它会阻止。

好的,我现在得到了问题。一般来说,是的。需要运行一些其他代码来释放阻塞条件。非显而易见的情况是内核线程,如果线程在I / O上被阻塞,则在驱动程序中运行代码。或线程调度程序,以防线程被阻塞,因为它正在等待获取处理器或等待非无限超时。

答案 1 :(得分:1)

是的,任何同步操作都可能发生这种情况,其中一个线程需要等待另一个线程执行某些操作。例如,如果线程A持有锁,然后在内核中执行长阻塞操作,则另一个线程B将在尝试获取锁时阻塞。线程B将被阻塞,至少在线程A的阻塞操作完成之前。

在极端情况下,彼此等待的线程将导致Deadlock

补充说明

进程中的线程彼此独立运行。一个线程阻塞不一定会阻塞其他线程。这是首先使用线程的主要原因之一,。

答案 2 :(得分:-1)

当一个线程被阻塞时,它也会阻塞进程中的所有线程