2010-06-21 4 views
3

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

Благодарим за помощь.

ответ

4

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

+1

Да, всегда полезно подумать о параллелизме. – ChaosPandion

+0

Да, это проблема, с которой я столкнулся. На данный момент моя программа однопоточная, но очень вероятно, что в будущем будет несколько потоков ... – Mewzer

1

Mutex может иметь смысл, поскольку Mutex можно использовать для совместного использования системы, а не для совместного доступа к общим процессам. Например, вы можете использовать Mutex для prevent an application from being started twice.

1

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

+0

В действительно однопоточном приложении, вероятно, есть лучшие варианты для этого ... –

+0

@Reed - Я уверен в этом, поэтому я добавил небольшое заявление об отказе от ответственности. – ChaosPandion

1

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

1

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

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

1

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

 Смежные вопросы

  • Нет связанных вопросов^_^