lockSync 抽象方法

void lockSync(
  1. [
  2. int start = 0,
  3. int end = -1]
)

同步锁定文件或文件的某个部分。

默认情况下会获得独占锁,但可以通过 mode 参数来覆盖。

锁定从 startend 的文件字节范围,不包括位置 end 处的字节。如果没有指定任何参数,则锁定整个文件;如果只指定了 start,则从字节位置 start 开始,无论其如何增长,都会锁定整个文件。可以指定一个显式的 end 值,该值超过了文件的当前长度。

要获得文件的独占锁,必须以写入方式打开该文件。

如果 modeFileLock.exclusiveFileLock.shared,如果无法获得锁,则抛出异常。如果 modeFileLock.blockingExclusiveFileLock.blockingShared,则仅在获得锁之后,调用才返回。

注意 文件锁定在不同平台上有轻微的行为差异。

在 Linux 和 OS X 上,这使用建议性锁,这有一个令人惊讶的语义,即当进程关闭该文件的任意文件描述符时,与给定文件关联的所有锁都将被删除。注意,这实际上并没有锁定文件以供访问。此外,注意建议性锁是按进程级别的。这意味着同一个进程中的几个 isolate 可以对该同一文件获得独占锁。

在 Windows 上,用于锁定和解锁的区域需要匹配。如果不匹配,则解锁会导致操作系统错误 "The segment is already unlocked"。

实现

void lockSync(
    [FileLock mode = FileLock.exclusive, int start = 0, int end = -1]);