没有信号()和wait()做的semaphor算法?

问题描述 投票:-1回答:1

是否信号()和wait()做一个信号量的算法?我知道,他们中的一个做小号++和其他S--但我不知道哪一个做哪个。我已签出的信号算法,它似乎表明,信号带来的计数器下降到0。

semaphore pseudocode
1个回答
0
投票

条件变量与signalwait的人。

当你想要一个线程等待,直到某一条件满足条件变量被使用。

while(!canProceed) { cond.wait(); }

当另一个线程要解除这些阻塞的线程,它只是调用signal(疏通一个)或broadcast(取消阻止所有)。

canProceed = true
cond.broadcast()

信号量是一个简单的mutex的概括。虽然mutex允许一个给定的临界区里面有一个线程,semaphores允许内部N线程。

线程最初wait进入临界区;之后,他们就完成了他们post(至少使用pthreads API)。

semaphore.wait();
do_stuff();
semaphore.post();
© www.soinside.com 2019 - 2024. All rights reserved.