Можно ли сделать семафор только из замков? - PullRequest
1 голос
/ 13 сентября 2011

Мне было интересно, можно ли создать семафор, используя только блокировки.Я видел реализации с отключением / включением прерываний и использованием атомарных примитивов, таких как test & set, но возможно ли реализовать один, используя только блокировки?

Кажется, что сделать что-то вроде

guard = 0;
...
while(test&set(guard));

- этов основном то же самое, что делать lock.acquire ().Я что-то здесь упускаю?

Редактировать: Частично причина, по которой я задаю этот вопрос, заключается в том, что я читал эти слайды здесь: http://www.cs.washington.edu/homes/arvind/cs422/lectureNotes/l7-6.pdf Эти слайды предлагают реализации семафоров с использованием отключения прерываний, тестирования и установки, но рассматривает реализацию семафоров с использованием блокировок как вопрос, который я взял, чтобы подразумевать, что реализация с использованием блокировок может не работать по какой-то причине.

1 Ответ

0 голосов
/ 13 сентября 2011

Я думаю, проблема в том, что вы заняты в этом цикле. То, что вы называете acqu (), было бы операцией, которая переходит в спящий режим и активируется только после того, как семафор был получен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...