Thread Sicherheit: Race condition zwischen open bzw. fstat und lock?
(5 answers)
Opened by GwenDragon at 2011-02-15 13:06 2011-02-15T12:06:53 GwenDragon Wenn Du es richtig machst, gibt es da keine Race Condition. Dein kritischer Bereich beginnt erst nach dem flock. Wieviele Prozesse vorher die Datei aufgemacht haben, ist doch egal. Wichtig ist allerdings, dass Du die Datei nicht löschst. Angenommen die Datei existiert nicht. Nun starten 2 Prozesse annähernd gleichzeitig. Einer erzeugt die Daitei. Das ist eine atomare Operation. Der nächste findet sie dann und öffnet sie nur noch. Beide laufen dann bis zum flock. Nur für einen geht es weiter. Irgendwann verlässt der Gewinner den kritischen Bereich wieder. Der zweite Prozess kann nun weitermachen. Wenn nun aber der Gewinner die Datei löscht, könnte ein dritter Prozess diese wieder anlegen und die neue Datei locken, da der Lock des zweiten Prozesses nur für die gelöschte Datei gilt. Da hast Du eine Race Condition, aber nicht beim Öffnen und sperren. Fazit: Lock-Dateien dürfen nie gelöscht werden. Dann ist die Welt in Ordnung. |