2012-09-24 143 views
0

(1)在多线程进程中,如果一个线程忙于I/O,整个进程是否会被阻塞?多线程,阻塞和信号量

(2)哪个更适合使用互斥锁或二进制信号量?什么时候应该使用互斥体,什么时候应该使用二进制信号量?

+0

号互斥由特定的线程拥有,信号量是没有的。 –

+0

1)第2)你应该几乎总是使用互斥量而不是信号量。 –

回答

1

1)。那么,一次只有一个线程被分配给多线程应用程序中的CPU。如果你说你的线程经常忙于I/O,那么实际上可能会发生所有其他线程一直在队列中等待CPU分配给它们的情况。这取决于所使用的CPU allocation algorithm。如果线程正在使用Time-Sharing算法,那么当然在完成时间后,当前线程将被发送到队列的后面。 2)。看看这篇文章: - Difference between binary semaphore and mutex

+0

非常感谢。它解决了我的疑问 – Laavaa

+0

@Abhishek ..你是欢迎..如果你的问题解决了,你可以接受它作为回答标记这个问题解决.. –

+1

通常,执行I/O操作允许其他线程准备运行获得CPU,(当然在任何具有抢先调度器的操作系统上,即几乎所有的操作系​​统)。 –

0

1)在SMP环境中,多个线程可以并行运行(在不同的cpu上)。在单个CPU环境中,一次只能运行一个线程。

2)阅读本diff-binary-semaphore-and-mutex