我在喝汤。这个想法可能不好,但我确实需要解决方案。
被线程2唤醒。
现在,我有另一个线程5,它在条件变量A上具有pthread_cond_broadcasts()。在线程4唤醒之前,我需要唤醒所有线程1、2和3。也就是说,如果线程2唤醒并且B线程4上的信号可能在线程3之前唤醒,这不是我想要的。
任何指针将不胜感激。
谢谢
最佳答案
使用semaphore:让1-3线程中的每一个都张贴该信号量,并让线程4在该信号量上等待3次,而不是在条件变量上等待。
您将要使用 sem_init(3)
或 sem_open(3)
创建信号量,使用 sem_post(3)
发布信号量,使用 sem_wait(3)
等待信号量,然后使用 sem_destroy(3)
(如果使用sem_init
创建)或 sem_close(3)
和 sem_unlink(3)
(如果使用sem_open
JSON创建)信号。
关于c - 条件变量信令问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6935792/