Thread flock funktioniert nicht
(64 answers)
Opened by x-man at 2006-04-17 19:11
Weil der von mir gegebene Code immer die Datei mit dem Namen "datei" anlegt (wobei man die Datei vorher selbst anlegen sollte, wenn man sysopen ohne O_CREAT verwendet), habe ich den Code immer mit /tmp als Arbeitsverzeichnis laufen lassen. Einmal habe ich vergessen, "cd /tmp" zu machen und somit lief er im Home-Verzeichnis. Dreimal duerft Ihr raten, was ich rausgefunden habe: Im Home-Verzeichnis gibt es reproduzierbar deutlich andere Ergebnisse als in /tmp! (Man muss erwaehnen, dass /home bei mir ext3 ist und /tmp ist tmpfs.)
Die Ergebnisse in /tmp sind immer ungefaehr wie oben (54 fuer sysopen, 58 fuer open), in ~ sind sie hingegen immer ungefaehr 54 fuer sysopen, 70 fuer open. Ferner habe ich noch probiert, was passiert, wenn man bei sysopen nicht nur O_WRONLY sondern O_WRONLY|O_CREAT|O_TRUNC angibt (das ist genau das, was open auch macht, siehe strace). Das Ergebnis ist erschuetternd: Nun braucht sysopen länger als open! Circa 65 Sekunden fuer 5000000 Durchläufe auf tmpfs und ca. 80 auf ext3. Hier noch einmal als Uebersicht: Code: (dl
)
1 | ext3 | tmpfs Was mich vor allem wundert, ist, dass der Unterschied zwischen open und sysopen(O_WRONLY|O_CREAT|O_TRUNC) sich je nach Dateisystem unterschiedlich stark äußert. Ein Blick in strace zeigt naemlich beide Male dieselben System-Calls, und außerhalb von System-Calls sollte sich das Dateisystem eigentlich nicht auswirken... Ich bin jetzt etwas zu muede, um weiter zu experimentieren.\n\n <!--EDIT|betterworld|1145410044--> Lieblingsmodule:
![]() ![]() |