系统相关
首页 > 系统相关> > c-boost进程间file_lock不适用于多个进程

c-boost进程间file_lock不适用于多个进程

作者:互联网

我似乎对boost :: interprocess :: file_lock有问题

我有基本上是过程1

    boost::interprocess::file_lock test_lock("testfile.csv");
    test_lock.lock();
    sleep(1000);
    test_lock.unlock();

当第一个进程处于休眠状态时运行第二个进程时,我仍然可以读取testfile.csv.更糟糕的是,我什至可以覆盖它.

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

解决方法:

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

与任何互斥锁类型的对象一样,锁本身也可以保护或计量对其他资源的访问.

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

Reference

标签:interprocess,c,locking,file-io,boost
来源: https://codeday.me/bug/20191011/1889777.html