Нет способа сделать это в нативном C ++, так как это сильно зависит от платформы. В Linux / UNIX вы можете сделать это с помощью flock
или fcntl
. Я не совсем уверен, как это сделать в Windows.
В Windows похоже, что вы должны передать некоторые флаги CreatFile
или использовать LockFileEx
(что позволяет блокировку диапазона байтов).
Обратите внимание, что все эти методы работают с дескрипторами / дескрипторами файлов операционной системы, а не с fstream
s. Вам нужно будет либо использовать Posix или Windows API для чтения / записи из файла, либо обернуть дескриптор / дескриптор файла в fstream
. Это снова зависит от платформы. Я уверен, что есть способ сделать это, но я не помню этого на макушке.