Thread open-Anweisung (22 answers)
Opened by geloescht at 2012-06-24 00:30

rosti
 2012-06-24 21:50
#159337 #159337
User since
2011-03-19
3500 Artikel
BenutzerIn
[Homepage]
user image
Hi,

Race Conditions vermeidest Du, indem Du den Prozess "vom Lesen bis zum Zurückschreiben" atomar machst: Nicht mehr teilbar. D.h.:

Code (perl): (dl )
1
2
3
4
5
6
$fh->open($file, O_RDWR) or die $!;
flock $fh, LOCK_EX;
# Nummer lesen
# Wert erhöhen
# Truncate und Zurückschreiben
$fh->close; # Buffer werden geleert, Datei wird geschlossen


Das ist alles: jeder Prozess, der das LOCK bekommt, hat Lesen+Schreiben für sich allein, flock() bewirkt, dass weitere Prozesse warten. Prüfe, ob flock() einen wahren Wert zurückgibt, andernfalls ist flock() nicht wirksam (Warnung ausgeben).

Rosti

View full thread open-Anweisung