Memory Zugeordnete Dateien und atomare Schreibvorgänge einzelner Blöcke

Wenn ich eine einzelne Datei mit normalen E / A-APIs lese und schreibe, sind Schreibvorgänge auf Blockbasis garantiert atomar. Das heißt, wenn mein Schreibvorgang nur einen einzelnen Block ändert, garantiert das Betriebssystem, dass entweder der gesamte Block oder gar nichts geschrieben wird.

Wie kann ich den gleichen Effekt auf eine Speicherzuordnungsdatei erzielen?

ugeordnete @Memory-Dateien sind einfach Bytearrays. Wenn ich das Bytearray ändere, kann das Betriebssystem nicht erkennen, wann ein Schreibvorgang abgeschlossen ist. Daher wird möglicherweise (auch wenn dies unwahrscheinlich ist) der Speicher nur in ausgelagert In der Mitte meiner Blockschreiboperation schreibe ich praktisch einen halben Block.

Ich benötige eine Art "Kritischen Bereich betreten / verlassen" oder eine Methode, um die Seite einer Datei in den Speicher zu verschieben, während ich darauf schreibe. Gibt es so etwas? Wenn ja, ist das portabel für gängige POSIX-Systeme und Windows?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage