Вопрос

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

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

Это было полезно?

Решение

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

Другие советы

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

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

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

Ты можешь использовать system-wide semaphores (и даже mutexes) делать inter-process communication.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top