多线程,阻塞和信号量

时间:2012-09-24 17:13:09

标签: multithreading operating-system thread-safety pthreads

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

(2)使用互斥锁或二进制信号量哪个更好?我何时应该使用互斥锁?什么时候应该使用二进制信号量?

2 个答案:

答案 0 :(得分:1)

1)。好吧,一次只有一个线程在多线程应用程序中分配CPU。如果你说你的线程经常忙于I / O,那么实际上可能会发生所有其他线程在队列中等待将CPU分配给它们。它取决于使用的CPU allocation algorithm。就像线程使用Time-Sharing算法一样,当然在完成时间时,当前线程将被发送到队列的后面。

2)。看看这篇文章: - Difference between binary semaphore and mutex

答案 1 :(得分:0)

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

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