бинарный семафор против мьютекса - PullRequest
2 голосов
/ 26 апреля 2011

Представьте, что у вас двойной замок:

Ex:

mutex.lock();
mutex.lock();

Ex:

binarysemaphore.wait();
binarysemaphore.wait();

Будет ли поведение этих двух отличаться? Или они будут такими же.

Ответы [ 2 ]

4 голосов
/ 26 апреля 2011

Я предполагаю, что вы имеете в виду рекурсивную блокировку (не двойную блокировку)

Будет ли операция отличаться, зависит полностью от платформы и реализации.

Я думаю, что в Windows по умолчанию для мьютексов используетсябыть рекурсивным (так работает блокировка повторного входа), а семафоры - нет

Однако в pthreads (POSIX) вы можете настроить его любым удобным для вас способом.

0 голосов
/ 22 июля 2012

Во время обучения нам сказали, что Semaphore с max count = 1 равно Mutex.

Это не совсем так.

  1. Mutex не можетбыть выпущенным любым другим потоком.
  2. Semaphore может использоваться в такой ситуации.
...