我在喝汤。这个想法可能不好,但我确实需要解决方案。

  • 我有两个条件变量,说A和B。
  • 线程1、2和3正在等待A。线程4正在等待B。
  • B被线程2设为pthread_cond-signal(),即线程4被设为
    被线程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/

    10-11 15:09