我想boost::interprocess::file_lock
用来确保按进程写入目录的文件x
在完成之前P1
不会被进程读取P2
。为此,我想在写入文件时P1
锁定文件boost::interprocess::file_lock
,然后在完成后解锁它们。然后P2
可以跳过(并返回)任何被锁定的文件。
我遇到的问题是它似乎boost::interprocess::file_lock
只允许您锁定存在的文件。但是,如果我先创建文件,然后将其锁定,则会出现竞争条件:
P1
创建文件P2
注意到文件并开始读取它P1
锁定文件P1
写入一些数据P2
读取一些数据,到达最后,最后只得到P1
' 的一部分输出。
所以我想做的是创建一个文件并在创建后立即将其锁定。有没有办法做到这一点boost::interprocess::file_lock
?