Семафоры в одной теме - PullRequest
3 голосов
/ 22 июня 2010

Мне было интересно, имеет ли смысл использовать мьютекс или семафор, когда существует только один поток?

Спасибо за вашу помощь.

Ответы [ 6 ]

4 голосов
/ 22 июня 2010

Я проектирую защиту потоков для своих компонентов, потому что они являются повторно используемыми и масштабируемыми компонентами, предназначенными для работы в любой среде, которую я реально могу предвидеть.Много раз они изначально используются в среде с одним потоком.Часто область применения расширяется, чтобы включать больше потоков.Тогда мне не нужно искать ресурсы для защиты от новых сценариев доступа.

1 голос
/ 11 апреля 2013

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

1 голос
/ 22 июня 2010

Вы можете использовать system-wide semaphores (и даже мьютексы), чтобы сделать inter-process communication.

Вы можете передавать сигналы от однопоточного процесса другому однопоточному процессу, например, acquire()/release() на именованном семафоре.

1 голос
/ 22 июня 2010

Звучит как вопрос с подвохом. Технически, да. Именованный мьютекс может использоваться для синхронизации нескольких процессов, содержащих один поток в каждом.

1 голос
/ 22 июня 2010

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

1 голос
/ 22 июня 2010

Mutex может иметь смысл, поскольку Mutex может использоваться для общего доступа к системе, а не для внутреннего общего процесса. Например, вы можете использовать Mutex для , чтобы приложение не запускалось дважды .

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