Чтение как ответы кажется, что оба ответа обеспечивают решение для создания мьютекса, но есть некоторые случаи, когда вам нужно использовать flock
и некоторые, где вам нужно использовать mkdir
:
- если вам нужно уже надежные/проверенные функции, такие как тайм-аут, блокирование и т.д. и т.п. -> использовать
flock
- встроенного тайм-аут
- предопределённого су pport для блокирования или блокирующих
- встроенной поддержки для удаления семафора после использования
- если ваш дистрибутив не
flock
-> вы вынуждены использовать mkdir
- если вам нужно любой из тайм-аутов или других функций, предоставляемых
flock
, вам нужно изобретать велосипед
- используя
mkdir
для создания мьютекса означает, что ваш код не передает цель немедленно -> whe reas using flock
означает, что ваш код говорит сам за себя, говоря, что «этот код выполняет синхронизацию»
- большинство людей не знакомы с
mkdir
, являющимся допустимым решением для создания мьютекса, и поэтому использование mkdir
таким образом может привести к тому, что ваш код будет иметь больше кода запах (особенно, если ваш дистрибутив имеет flock
доступный и вы не хотите его использовать)
Поскольку это своего рода мета-ответ через [Quick-и-грязный способ обеспечить только один экземпляр сценария оболочки запускается одновременно] (http://stackoverflow.com/q/185451/1983854), было бы лучше открыть щедрость в этом, вместо того, чтобы иметь это. – fedorqui
В настоящее время несколько запутанно иметь два ответа, которые реализуют одно и то же (но разные реализации) и имеют примерно одинаковое количество upvotes. В зависимости от результата этого вопроса, я помечаю один из двух вопросов как дубликат (с надеждой уменьшить путаницу). –