Мне было интересно, можно ли создать семафор, используя только блокировки.Я видел реализации с отключением / включением прерываний и использованием атомарных примитивов, таких как test & set, но возможно ли реализовать один, используя только блокировки?
Кажется, что сделать что-то вроде
guard = 0;
...
while(test&set(guard));
- этов основном то же самое, что делать lock.acquire ().Я что-то здесь упускаю?
Редактировать: Частично причина, по которой я задаю этот вопрос, заключается в том, что я читал эти слайды здесь: http://www.cs.washington.edu/homes/arvind/cs422/lectureNotes/l7-6.pdf Эти слайды предлагают реализации семафоров с использованием отключения прерываний, тестирования и установки, но рассматривает реализацию семафоров с использованием блокировок как вопрос, который я взял, чтобы подразумевать, что реализация с использованием блокировок может не работать по какой-то причине.