Linux 和 AFAIK 大多数 UNIX 都会公开flock
强制文件锁定的系统调用。诚然,我的经验有限,但我得知它是内核在整个资源上强制执行的。但是,如果我只想强制锁定文件的一部分,以便允许对该资源进行读/写,只要它们不跨越特定边界或在到达锁定区域的外部边界后停止读取,该怎么办。这可能吗?
编辑:可能的实施
咨询部分锁定的可能性可以通过 MMaped 区域来实现,其中内存被映射到每个读取器的地址空间,前提是所请求的区域不持有锁。这将完全在用户空间中实现,因此失去了内核强制锁定的优势,但肯定会起作用
您可以使用、或命令宏
fcntl(2)
进行系统调用来获取部分锁定,并通过作为第三个参数提供的结构来提供要锁定的部分区域。F_SETLK
F_SETLKW
F_GETLK
flock