Условные переменные - это переменные с signal
и wait
.
Условная переменная используется, когда требуется, чтобы поток ожидал, пока не будет выполнено определенное условие.
while(!canProceed) { cond.wait(); }
Когда другой поток хочет разблокировать эти заблокированные потоки, он просто вызывает signal
(чтобы разблокировать один) или broadcast
(чтобы разблокировать все).
canProceed = true
cond.broadcast()
Семафоры - это просто обобщения mutex
.* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * '* * * *' * 10 *
"
*1023*" ».после этого они
post
(по крайней мере, с использованием
pthreads
API).
semaphore.wait();
do_stuff();
semaphore.post();