是否信号()和wait()做一个信号量的算法?我知道,他们中的一个做小号++和其他S--但我不知道哪一个做哪个。我已签出的信号算法,它似乎表明,信号带来的计数器下降到0。
条件变量与signal
和wait
的人。
当你想要一个线程等待,直到某一条件满足条件变量被使用。
while(!canProceed) { cond.wait(); }
当另一个线程要解除这些阻塞的线程,它只是调用signal
(疏通一个)或broadcast
(取消阻止所有)。
canProceed = true
cond.broadcast()
信号量是一个简单的mutex
的概括。虽然mutex
允许一个给定的临界区里面有一个线程,semaphores
允许内部N
线程。
线程最初wait
进入临界区;之后,他们就完成了他们post
(至少使用pthreads
API)。
semaphore.wait();
do_stuff();
semaphore.post();