lockSync — абстрактный метод
Синхронно блокирует файл или его часть.
По умолчанию будет получена эксклюзивная блокировка, но это можно переопределить с помощью аргумента mode.
Блокирует диапазон байтов от start до end файла, не включая байт в позиции end. Если аргументы не указаны, блокируется весь файл. Если указан только start, файл блокируется от позиции байта start до конца файла независимо от того, насколько большим он станет. Можно указать явное значение end, превышающее текущую длину файла.
Чтобы получить эксклюзивную блокировку файла, его необходимо открыть для записи.
Если mode имеет значение FileLock.exclusive или FileLock.shared, возникает исключение, если получить блокировку не удаётся. Если mode имеет значение FileLock.blockingExclusive или FileLock.blockingShared, вызов возвращается только после получения блокировки.
ПРИМЕЧАНИЕ: поведение блокировки файлов немного различается на разных платформах:
В Linux и OS X используются рекомендательные блокировки, которые обладают неожиданной особенностью: все блокировки, связанные с данным файлом, снимаются, когда процесс закрывает любой файловый дескриптор этого файла. Обратите внимание, что фактически это не блокирует доступ к файлу. Также обратите внимание, что рекомендательные блокировки действуют на уровне процесса. Это означает, что несколько изолятов в одном процессе могут получить эксклюзивную блокировку одного и того же файла.
В Windows области, используемые для блокировки и снятия блокировки, должны совпадать. В противном случае при снятии блокировки возникнет ошибка ОС «Сегмент уже разблокирован».
Реализация
void lockSync(
[FileLock mode = FileLock.exclusive, int start = 0, int end = -1]);
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.19.6/dart-io/RandomAccessFile/lockSync.html