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]);