Multithreading 多线程、阻塞和信号量

Multithreading 多线程、阻塞和信号量,multithreading,operating-system,thread-safety,pthreads,Multithreading,Operating System,Thread Safety,Pthreads,(1) 在多线程进程中,如果一个线程在I/O上忙,整个进程会被阻塞吗 (2) 使用互斥或二进制信号量哪个更好?什么时候应该使用互斥,什么时候应该使用二进制信号量。在多线程应用程序中,每次只有一个线程被分配给CPU。如果您说您的线程经常忙于I/O,那么实际上,所有其他线程都可能一直在队列中等待CPU分配给它们。它取决于所使用的CPU分配算法。就像线程正在使用分时算法一样,当然在时间结束时,当前线程将被发送到队列的后面 2) 。查看本文:-1)在SMP环境中,多线程可以并行运行(在不同的cpu上)。

(1) 在多线程进程中,如果一个线程在I/O上忙,整个进程会被阻塞吗

(2) 使用互斥或二进制信号量哪个更好?什么时候应该使用互斥,什么时候应该使用二进制信号量。在多线程应用程序中,每次只有一个线程被分配给CPU。如果您说您的线程经常忙于I/O,那么实际上,所有其他线程都可能一直在队列中等待CPU分配给它们。它取决于所使用的CPU
分配算法。就像线程正在使用
分时
算法一样,当然在时间结束时,当前线程将被发送到队列的后面

2) 。查看本文:-

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


2) 阅读此文

否。互斥锁由特定线程拥有,信号量不是。1)否。2)您几乎应该始终使用互斥锁而不是信号量。@Abhishek。。不客气。如果您的问题解决了,您可以接受它作为标记此问题已解决的答案。通常,I/O操作允许其他准备运行的线程获得CPU(当然是在任何具有抢占式调度程序的操作系统上,即几乎所有的操作系统)。这还取决于忙于I/O操作的线程的优先级。。如果它的优先级足够高,它将不会被抢占。。