所以我在网上搜索了一些答案,但似乎没有什么可以清楚地回答它。我的问题很简单,比如说,我需要 5 个工作线程进入队列,然后向它们的主线程(线程 6)发出信号,表明它们都在队列中准备工作。由于我的程序的其余部分的工作方式,如果我想要完成的事情确实有效,那就最好了,也就是说:
因此,如果我让老板线程锁定,看到队列没有完全满,老板将pthread_cond_wait(...);
并等待,直到它已经满了。现在,所有工作线程将进入队列并等待,一旦最后一个线程进入,他将向主线程发出信号,然后等待。那么,在最后一个 worker 发出信号通知他等待时,老板还会等到最后一个助手到达等待吗?因为我不希望老板在最后一个线程真正等待之前做任何事情。因此,最终线程将不会命中 pthread_mutex_unlock(...)
他将命中 pthread_cond_wait(...)
并且我想要验证一下这会吵醒我们老大。预先感谢,我希望我的问题很清楚,我倾向于过度解释一切:/
最佳答案
老板可以等待 worker 发送的信号n次。每次醒来时,它都会检查队列长度,如果未满则再次等待。 在这种情况下最好使用信号量。
关于c - 调用 pthread_cond_signal(...) 然后调用 pthread_cond_wait(...) 会唤醒服务员吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36530283/