Мне было интересно, будет ли иметь смысл использовать мьютекс или семафор, когда есть только один поток ?.Семафоры в одной теме
Благодарим за помощь.
Мне было интересно, будет ли иметь смысл использовать мьютекс или семафор, когда есть только один поток ?.Семафоры в одной теме
Благодарим за помощь.
Я проектирую защиту резьбы в своих компонентах, потому что они являются многоразовыми и масштабируемыми компонентами, предназначенными для работы в любых условиях, которые я могу реально ожидать. Много раз они изначально используются в среде с одним потоком. Часто масштабы реализации расширяются, чтобы включать больше потоков. Тогда мне не нужно преследовать ресурсы для защиты от новых сценариев доступа.
Mutex может иметь смысл, поскольку Mutex можно использовать для совместного использования системы, а не для совместного доступа к общим процессам. Например, вы можете использовать Mutex для prevent an application from being started twice.
Это может быть немного, но позволяет сказать, что вы пишете рекурсивную функцию и хотите, чтобы каждый уровень регистрировался отдельным ресурсом. Таким образом, вы можете нести ответственность за очистку ресурса в одном месте (пул ресурсов).
В действительно однопоточном приложении, вероятно, есть лучшие варианты для этого ... –
@Reed - Я уверен в этом, поэтому я добавил небольшое заявление об отказе от ответственности. – ChaosPandion
Звучит как трюк вопрос. Технически, да. Именованный мьютекс может использоваться для синхронизации нескольких процессов, содержащих один поток в каждом.
Вы можете использовать system-wide semaphores
(и даже мьютексы), чтобы сделать inter-process communication
.
Вы можете подать сигнал от однопоточного процесса к другому однопоточному процессу, например, с помощью acquire()/release()
, например, с именем семафора.
В случае, если среда поддерживает системные прерывания, она добавляет нелинейное поведение. Семафор можно использовать для сна в основной нити до триггеров прерывания.
Да, всегда полезно подумать о параллелизме. – ChaosPandion
Да, это проблема, с которой я столкнулся. На данный момент моя программа однопоточная, но очень вероятно, что в будущем будет несколько потоков ... – Mewzer