使用信号量实现pthread_cond_wait()和signal()

时间:2018-12-03 05:07:18

标签: multithreading mutex semaphore

我正在考虑是否可以使用条件变量中内置的信号量来实现pthread_cond_wait()pthread_cond_signal()

对于pthread_cond_wait(),它的工作方式是解锁互斥锁,调用sem_wait(),然后重新获取锁。

pthread_cond_wait:
    mutex_unlock(mutex)
    sem_wait(cond->sem)
    mutex_lock(mutex)

对于pthread_cond_signal(),它将调用sem_post()

pthread_cond_signal:
    sem_post(cond->sem)

我在想,如果有许多线程在等待,那么一个信号只会使信号量增加1,这仍然是负数。因此,直到我们收到与等待线程一样多的信号之前,没有线程会唤醒,这意味着该实现无法正常工作吗?

0 个答案:

没有答案