Thread Sicherheit: Race condition zwischen open bzw. fstat und lock?
(5 answers)
Opened by GwenDragon at 2011-02-15 13:06
Wenn ich folgende Beispielcodes verwende, kann es doch zwischen diversen Dateifunktionen zu einer Race condition (RC) kommen, oder?
Code (perl): (dl
)
1 2 3 open(my $fh1, "+<", "BLAH") or return; # <---- dazwischen Race Condition möglich? flock($fh1, LOCK_EX); oder Code (perl): (dl
)
1 2 3 sysopen(my $fh, "BLAH", O_RDWR) or return; # <---- dazwischen Race Condition möglich? flock($fh, LOCK_EX); oder Code (perl): (dl
)
1 2 3 4 5 6 7 8 my $numlinks = (stat( "BLAH"))[3]; # <---- dazwischen Race Condition möglich? if ($numlinks == 0) { # <---- dazwischen Race Condition möglich? open(my $fh, "+<", "BLAH") or return; # <---- dazwischen Race Condition möglich? flock($fh, LOCK_EX); } Und erst recht bei: Code (perl): (dl
)
1 2 3 4 5 6 if (-l "BLAH") { # <---- dazwischen Race Condition möglich? open(my $fh, "+<", "BLAH") or return; # <---- dazwischen Race Condition möglich? flock($fh, LOCK_EX); } Deswegen sollte eine ja die Finger von den Dateitestoperatoren lassen. Auf einem (stark beschäftigten) System kann es doch zwischen den Aufrufen zur einer RC kommen. Oder irre ich mich da? |