boost interprocess file_lock不适用于多个进程

use*_*171 3 c++ file-io boost locking interprocess

我似乎遇到了boost :: interprocess :: file_lock的问题

我有基本上的过程1

    boost::interprocess::file_lock test_lock("testfile.csv");
    test_lock.lock();
    sleep(1000);
    test_lock.unlock();
Run Code Online (Sandbox Code Playgroud)

当我在第一个进程正在休眠时运行第二个进程时,我发现我仍然能够读取testfile.csv.更糟糕的是,我甚至可以覆盖它.

我是否误解了file_lock的工作原理?我的印象是,调用.lock()会对文件进行独占锁定,并阻止任何其他进程读取/修改文件.

Joe*_*Joe 10

file_lock不用于锁定文件.它是一个互斥对象,它使用文件作为其后备技术.文件内容基本无关; 相关的是指向该文件的file_lock的所有实例都将遵循锁的锁定特性.

与任何互斥锁类型对象一样,锁本身用于保护或以其他方式计量访问某些其他资源.

它与文件的文件系统保护无关.

参考