Ich empfehle eine gute Boost-Dokumentation: http://www.boost.org/doc/libs/1_45_0/doc/html/interprocess/synchronization_mechanisms.html#interprocess.synchronization_mechanisms.file_lock
Darin können Sie lesen:
- Dateisperren sind keine Betriebssystemsperren, auch wenn das Betriebssystem sie unterstützt (z.B. Windows ja, Unix-ähnliche normalerweise nicht). Wenn Sie also eine Datei sperren, kann jeder sie lesen/schreiben/löschen, es sei denn, ein anderer Prozess verwendet denselben Dateisperrmechanismus. Betrachten Sie es also eher als prozessübergreifende Mutexe denn als echte Dateisperren.
- Dateisperren dienen der Synchronisierung zwischen Prozessen, sie synchronisieren nicht mehrere Threads innerhalb eines Prozesses
- Vergessen Sie nicht das Flushing (ofstream's flush), damit Sie sich nicht um die Pufferung kümmern müssen
Oh, das ist einfach schrecklich... Ich wollte helfen, ich habe Beispielcode geschrieben, versuchen Sie es und ... ab 1_44 Dateisperren ist für win32 gebrochen, Flushing funktioniert nicht auf gesperrte Datei.
Tut mir leid, nicht meine Schuld.
Wenn es hilft, in der Theorie: Wenn Sie eine Datei zum Anhängen öffnen, bedeutet dies, dass vor jedem Schreibvorgang automatisch nach dem Ende gesucht wird. Das hindert Sie nicht daran, jederzeit manuell nach dem Ende zu suchen - auch ohne zu schreiben. Die Erfahrung (siehe oben) sagt jedoch: Halten Sie sich von kaputten Dingen fern.