标题基本上不言自明。如果我使用特定条件和互斥锁调用 pthread_cond_wait,该线程是否会一直阻塞,直到使用相应条件调用 pthread_cond_signal?或者,无论互斥体随后是否再次解锁,它都会解除阻塞?
如果答案是前者,我有后续。我有一个用于在我的线程之间传递消息的队列。我想确保一次只有一个线程可以将一个项目附加到队列中(因此使用互斥锁)。没有任何线程知道是否有任何其他线程将等待自己控制互斥锁。
当尝试将项目附加到队列时,我锁定互斥锁,等待队列未满并具有 pthread 条件,然后执行附加,然后解锁互斥锁。在解锁它之前,我是否应该执行一个 pthread_cond_signal,即使我不知道是否有任何其他线程会等待?如果多个线程在等待会发生什么?