调用pthread_cond_signal(...)然后调用pthread_cond_wait(...)唤醒服务员吗?

时间:2016-04-10 13:19:17

标签: c multithreading pthreads

所以我在网上搜索了一些答案,似乎没有什么能清楚地回答它。我的问题很简单,比方说,我需要5个工作线程进入队列,然后发信号通知他们的老板线程(线程6)他们都在准备工作的队列中。由于我的程序的其余部分的工作方式,最好是我想要完成的工作实际上有效,并说:

因此,如果我让老板线程锁定,看到队列完全已满,老板将pthread_cond_wait(...);并等到它已满。现在,所有的workerthreads将进入队列并等待,一旦最后一个线程进入,他将向主设备发出信号然后等待。因此,在最终工人发出信号到他等待的时候,老板还会等到最后帮手等到等待时间?因为我不希望老板做任何事情,直到最后一个线程实际等待。因此,最后一个帖子将点击pthread_mutex_unlock(...)他会点击pthread_cond_wait(...)我想验证这会唤醒我们老板。在此先感谢,我希望我的问题很明确,我倾向于过度解释一切:/

1 个答案:

答案 0 :(得分:0)

老板可以等待工人发出的信号n次。每次唤醒时,它都会检查队列长度,如果没有满,则再次等待。 在这种情况下,最好使用信号量。