我似乎对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的所有实例都将遵守该锁的锁定特性.
与任何互斥锁类型的对象一样,锁本身也可以保护或计量对其他资源的访问.
它与文件的文件系统保护无关.