2016-06-22 4 views
2

Я искал Bash, как создать мьютекс. Я наткнулся на два разных способа создания мьютекса в Bash. Оба являются ответами stackoverflow и оба имеют> 100 upvotes: one answer uses mkdir и the other answer uses flock.В Bash при создании мьютекса я должен использовать `flock` или` mkdir`?

В bash при создании мьютекса, следует ли использовать flock или mkdir?

+0

Поскольку это своего рода мета-ответ через [Quick-и-грязный способ обеспечить только один экземпляр сценария оболочки запускается одновременно] (http://stackoverflow.com/q/185451/1983854), было бы лучше открыть щедрость в этом, вместо того, чтобы иметь это. – fedorqui

+0

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

ответ

2

Чтение как ответы кажется, что оба ответа обеспечивают решение для создания мьютекса, но есть некоторые случаи, когда вам нужно использовать flock и некоторые, где вам нужно использовать mkdir:

  • если вам нужно уже надежные/проверенные функции, такие как тайм-аут, блокирование и т.д. и т.п. -> использовать flock
    • встроенного тайм-аут
    • предопределённого су pport для блокирования или блокирующих
    • встроенной поддержки для удаления семафора после использования
  • если ваш дистрибутив не flock -> вы вынуждены использовать mkdir
    • если вам нужно любой из тайм-аутов или других функций, предоставляемых flock, вам нужно изобретать велосипед
    • используя mkdir для создания мьютекса означает, что ваш код не передает цель немедленно -> whe reas using flock означает, что ваш код говорит сам за себя, говоря, что «этот код выполняет синхронизацию»
    • большинство людей не знакомы с mkdir, являющимся допустимым решением для создания мьютекса, и поэтому использование mkdir таким образом может привести к тому, что ваш код будет иметь больше кода запах (особенно, если ваш дистрибутив имеет flock доступный и вы не хотите его использовать)

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

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