Thread Flock mit timeout
(14 answers)
Opened by freddy at 2009-08-08 20:01 2009-08-10T10:20:25 Taulmarill Jup. Lokal zum Vortest XP und Apache. Und durch Dich animiert hab ich es auch nochmal umgebaut, sieht jetzt so aus: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 sub create_link($) { my $fh = shift(@_); my $max = 10; my $err = ''; sysopen($fh, "sysopentest.txt",O_RDWR|O_CREAT,0600) or $err=$!; if (!$err) { my $start = time; my $flock = flock($fh,LOCK_EX|LOCK_NB); while (!$flock && time-$start < $max) { print "Flock: >$flock< warte 1\n"; sleep 1; $flock = flock($fh,LOCK_EX|LOCK_NB); } $err = 'Timeout on flock' if !$flock; } return $err; } Und Deine Erfahrung unter Windows kann ich nicht bestätigen. Starte in DOS-Box 1 das Script, welches weiter unten nach Aufruf von create_link() 20 Sekunden sleep't. Dann warte ich etwa 10 Sekunden und starte in DOS-Box 2 das gleiche Script nochmal. Ergebnis: Script in DOS-Box 2 rennt los, sobald in DOS-Box 1 die Beendigung mit close() durch ist. Also insofern aus meiner Sicht unter Windows sauberes flock() gemacht. Warum das bei meinem Ursprungscode irgendwie nicht wollte, weiß ich jetzt auch nicht mehr. Danke |