сигналов () и wait () в алгоритме семафора? - PullRequest
0 голосов
/ 31 января 2019

Существуют ли signal () и wait () в алгоритме семафора?Я знаю, что один из них делает S ++, а другой S--, но я не уверен, какой из них что делает.Я проверил алгоритм сигнала, и кажется, что сигнал понижает счетчик до 0.

1 Ответ

0 голосов
/ 05 февраля 2019

Условные переменные - это переменные с signal и wait.

Условная переменная используется, когда требуется, чтобы поток ожидал, пока не будет выполнено определенное условие.

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

Когда другой поток хочет разблокировать эти заблокированные потоки, он просто вызывает signal (чтобы разблокировать один) или broadcast (чтобы разблокировать все).

canProceed = true
cond.broadcast()

Семафоры - это просто обобщения mutex.* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * '* * * *' * 10 *

"

*1023*" ».после этого они post (по крайней мере, с использованием pthreads API).
semaphore.wait();
do_stuff();
semaphore.post();
...