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