Метод lockSync абстрактный
void lockSync(Синхронно блокирует файл или часть файла.
По умолчанию будет получен эксклюзивный замок, но это можно переопределить с помощью аргумента mode.
Замкивает байтовый диапазон от start до end файла, с байтом в позиции end не включительно. Если нет аргументов, весь файл блокируется. Если указан только start, файл блокируется от байтовой позиции start до конца файла, независимо от того, насколько он увеличится. Можно указать явное значение end, которое находится за пределами текущей длины файла.
Чтобы получить эксклюзивный замок на файле, он должен быть открыт для записи.
Если mode является FileLock.EXCLUSIVE или FileLock.SHARED, возникает исключение, если замок нельзя получить. Если mode является FileLock.BLOCKING_EXCLUSIVE или FileLock.BLOCKING_SHARED, вызов возвращает только после получения замка.
ПРИМЕЧАНИЕ блокировка файлов имеет незначительные различия в поведении на разных платформах:
В Linux и OS X это использование консультативных замков, которые имеют неожиданную семантику, что все замки, связанные с данным файлом, удаляются, когда любой дескриптор файла для этого файла закрывается процессом. Обратите внимание, что это не фактически блокирует файл для доступа. Также обратите внимание, что консультативные замки действуют на уровне процесса. Это означает, что несколько изолятов в одном процессе могут получить эксклюзивный замок на один и тот же файл.
В Windows области, используемые для блокировки и разблокировки, должны совпадать. Если это не так, разблокировка приведет к ошибке ОС "Сегмент уже разблокирован".
Исходный код
void lockSync(
[FileLock mode = FileLock.EXCLUSIVE, int start = 0, int end = -1]);
© 2012 the Dart project authors
Licensed under the Creative Commons Attribution-ShareAlike License v4.0.
https://api.dartlang.org/stable/1.24.3/dart-io/RandomAccessFile/lockSync.html