gpt4 book ai didi

c++ - 使用 boost::interprocess::file_lock 创建一个锁定文件

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:38:25 38 4
gpt4 key购买 nike

我想使用 boost::interprocess::file_lock 来确保进程 P1 写入目录 x 的文件> 在完成之前不会被进程 P2 读取。为此,我想让 P1 在写入文件时使用 boost::interprocess::file_lock 锁定文件,然后在完成后解锁它们。然后 P2 可以跳过(并返回)任何被锁定的文件。

我遇到的问题是 boost::interprocess::file_lock 似乎只允许您锁定存在的文件。但是,如果我先创建文件,然后将其锁定,则会出现竞争条件:

  1. P1 创建文件
  2. P2 注意到文件并开始读取它<​​/li>
  3. P1 锁定文件
  4. P1 写入一些数据
  5. P2 读取一些数据,到达最后,最后只有 P1 的部分输出。

所以我想做的是创建一个文件,并在创建后立即将其锁定。有没有办法使用 boost::interprocess::file_lock 来做到这一点?

最佳答案

你误解了 boost::interprocess::file_lock 的目的,当你使用方法 boost::interprocess::file_lock test_lock("my_file") 创建一个 file_lock 时,你并没有保护文件“my_file”免于读/写
通过其他进程,你只需声明你有一个引用文件“my_file”的锁,如果其他进程也有引用同一个文件的锁,你可以实现这些锁之间的互斥,但这些锁不关心关于文件“my_file”的读/写操作,文件只是一个标志

关于c++ - 使用 boost::interprocess::file_lock 创建一个锁定文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13402294/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com