Насколько легкое завершение по сравнению с семафором (ядро Linux)?

Рассмотрим сценарий в ядре, где мы инициируем какое-то действие вне текущего потока, а затем ждем завершения этого действия. Такого рода синхронизации можно добиться с помощью семафоров. Но вместо этого рекомендуется использовать дополнения.

Почему в таких ситуациях предпочтительнее использовать завершения, а не семафоры?

Завершения можно рассматривать как условные переменные, и в основном они реализуются с помощью семафоров с оболочкой над ними. Разве это не верно для дополнений в ядре Linux?

Кроме того, в документации говорится, что завершения лучше и легче, чем семафоры. Чем реализация завершения отличается от семафоров, которые усиливают эти преимущества?


person user31986    schedule 25.09.2013    source источник
comment
Можете ли вы предоставить ссылку на найденный вами источник, в котором говорится, что завершение считается лучшей практикой, чем семафоры?   -  person Benjamin Leinweber    schedule 25.09.2013
comment
lwn.net/images/pdf/LDD3/ch05.pdf : Страница 114   -  person user31986    schedule 26.09.2013
comment
возможный дубликат Разница между переменными завершения и семафорами   -  person Benjamin Leinweber    schedule 26.09.2013
comment
Я проверил этот пост перед публикацией этого. Я увидел, что он сосредоточен на различиях, основанных на вариантах использования, в то время как мой вопрос касается различий в их дизайне/архитектуре в ядре Linux. Пожалуйста, удалите повторяющийся тег, мы можем получить ответ на пост.   -  person user31986    schedule 26.09.2013