В чем разница между семафором и мьютексом в реализации? - PullRequest
4 голосов
/ 10 февраля 2011

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

Какой из нихэффективнее?

1 Ответ

4 голосов
/ 10 февраля 2011

Предполагая, что вы знаете основные различия между семпахором и мьютексом:

Для быстрой простой синхронизации используйте критическую секцию.

Для синхронизации потоковчерез границы процесса используйте мьютексы.

Для синхронизации доступа к ограниченным ресурсам используйте семафор.

Помимо того, что мьютексы имеют владельца,два объекта могут быть оптимизированы для различного использования.Мьютексы предназначены для удержания только в течение короткого времени;нарушение этого может привести к снижению производительности и несправедливому планированию.Например, работающему потоку может быть разрешено получить мьютекс, даже если другой поток уже заблокирован на нем, создавая взаимоблокировку .Семафоры могут обеспечивать большую справедливость, или справедливость может быть вызвана с помощью нескольких условных переменных.

...