2016-06-22 21 views
2

Ich suchte nach Bash, wie man einen Mutex erstellt. Ich habe zwei verschiedene Wege gefunden, um einen Mutex in Bash zu erstellen. Beide sind stackoverflow Antworten und beide haben> 100 upvotes: one answer uses mkdir und the other answer uses flock.Soll ich in Bash beim Erstellen eines Mutex `flock` oder` mkdir` verwenden?

In Bash sollte ich beim Erstellen eines Mutex flock oder mkdir verwenden?

+0

Da dies ist eine Art Meta-Antwort über [Quick-and-dirty Weise nur eine Instanz von einem Shell-Skript, um sicherzustellen, läuft zu einer Zeit] (http://StackOverflow.com/q/185451/1983854), es ist vielleicht am besten, ein Bounty in diesem zu öffnen, anstatt das zu haben. – fedorqui

+0

Gerade jetzt ist es etwas verwirrend, zwei Antworten zu haben, die dasselbe implementieren (aber verschiedene Implementierungen) und ungefähr dieselbe Anzahl von Upvotes haben. Abhängig vom Ergebnis dieser Frage werde ich eine der beiden Fragen als Duplikat markieren (mit der Hoffnung, die Verwirrung zu verringern). –

Antwort

2

Lesen Sie beide Antworten scheint es, dass beide Antworten bieten eine Lösung für einen Mutex zu schaffen, aber es gibt einige Fälle, in denen Sie flock verwenden und einige, wo Sie brauchen mkdir zu verwenden:

  • wenn Sie brauchen bereits robust/getesteten Funktionen wie Timeout, Sperrung, etc etc ->flock
    • builtin Timeout
    • gebautet su verwenden pport zum Blockieren oder
    • builtin Unterstützung nicht blockierend den Mutex zum Löschen, nachdem es
  • wenn Ihre Distribution flock haben nicht verwendet wird - Sie mkdir zu verwenden sind gezwungen
    • >, wenn Sie brauchen Irgendwelche der Timeout oder andere Funktionen von flock zur Verfügung gestellt müssen Sie das Rad
    • mit mkdir zum Erstellen eines Mutex neu erfinden bedeutet, dass Ihr Code nicht den Zweck sofort vermittelt -> whe Reas mit flock bedeutet, dass Ihr Code für sich selbst sagt spricht "dieser Code ist die Umsetzung der Synchronisation"
    • die meisten Menschen sind nicht vertraut mit mkdir ist eine gültige Lösung für die Erstellung eines Mutex und so mkdir auf diese Weise kann Ihren Code mehr Code haben Geruch (vor allem, wenn Ihre Distribution hat flock zur Verfügung und Sie wählt, es nicht zu benutzen)