我正在考虑是否可以使用条件变量中内置的信号量来实现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,这仍然是负数。因此,直到我们收到与等待线程一样多的信号之前,没有线程会唤醒,这意味着该实现无法正常工作吗?