我想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?