lockSync 抽象方法

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

同步锁定文件或文件的一部分。

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

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

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

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

注意 文件锁定在不同的平台之间有细微的行为差异

在 Linux 和 OS X 上,这使用建议性锁,其语义是当进程关闭与该文件相关的任何文件描述符时,将移除与给定文件关联的所有锁。请注意,这实际上并没有锁定文件以供访问。另外请注意,建议性锁是在进程级别上的。这意味着同一进程中的几个隔离区可以获得对同一文件的独占锁。

在 Windows 上,用于锁定和解锁的区域需要匹配。如果不匹配,解锁将导致操作系统错误“该段已解锁”。

实现

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