(1) 在多线程进程中,如果一个线程忙于I/O,整个进程会被阻塞吗?
(2) 使用互斥体或二进制信号量哪个更好?什么时候应该使用互斥体,什么时候应该使用二进制信号量?
(1) 在多线程进程中,如果一个线程忙于I/O,整个进程会被阻塞吗?
(2) 使用互斥体或二进制信号量哪个更好?什么时候应该使用互斥体,什么时候应该使用二进制信号量?
1)。好吧,在多线程应用程序中,一次只有一个线程分配了 CPU。如果您说您的线程经常忙于 I/O,那么实际上可能会发生所有其他线程一直在队列中等待以获取分配给它们的 CPU。这取决于使用的 CPU allocation algorithm
。就像线程正在使用Time-Sharing
算法一样,那么当然在时间完成时,当前线程将被发送到队列的后面。
2)。查看这篇文章: -二进制信号量和互斥量之间的区别
1) 在 SMP 环境中,多个线程可以并行运行(在不同的 cpu 上)。在单 CPU 环境中,一次只能运行一个线程。