Что такое семафор? - PullRequest
       114

Что такое семафор?

309 голосов
/ 29 августа 2008

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

Что такое семафор и как вы его используете?

Ответы [ 13 ]

1 голос
/ 12 мая 2011

Аппаратный или программный флаг. В многозадачных системах семафор представляет собой переменную со значением, которое указывает состояние общего ресурса. Процесс, которому требуется ресурс, проверяет семафор, чтобы определить состояние ресурсов, а затем решает, как поступить.

0 голосов
/ 02 февраля 2012

Это старый вопрос, но одно из самых интересных применений семафора - блокировка чтения / записи, и он явно не упоминался.

Ч / б замки работают простым способом: потребляют одно разрешение для читателя и все разрешения для писателей. Действительно, тривиальная реализация блокировки чтения и записи, но требует модификации метаданных при чтении (фактически дважды), которая может стать узким местом, все же значительно лучше, чем мьютекс или блокировка.

Другим недостатком является то, что авторы могут запускаться довольно легко, если только семафор не является справедливым или записи не получают разрешения в нескольких запросах, в этом случае им необходим явный мьютекс между собой.

Далее читать :

0 голосов
/ 29 августа 2008

Семафор - это способ блокировки ресурса, так что гарантируется, что при выполнении части кода только этот фрагмент кода имеет доступ к этому ресурсу. Это предотвращает одновременный доступ двух ресурсов к ресурсу, что может вызвать проблемы.

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