【发布时间】:2015-11-04 14:40:10
【问题描述】:
我需要使用boost::interprocess::file_lock 检查文件是否被锁定。我制作了这个,但我担心它会做什么:
bool DataCache::isLocked() const {
bool res = lock_->try_lock();
if(res)
lock_->unlock();
return res;
}
这是个好主意吗?有没有不加锁的检查方法?
【问题讨论】:
-
解锁后,您就会意识到此信息已过时。这与在不打开文件的情况下检查文件是否存在相同的问题。检查后状态可能会立即更改。不要根据结果做出关键决定,否则会引入微妙的竞争条件。
-
@JohnKugelman 好点。答案是否定的,我想,唯一有效的方法是锁定并做这些事情。
-
您为
tryLock和unlock创建了一个接口函数并使用它们? -
@sehe:发表了我的意思作为答案
-
@SimonKraemer 发帖 my response 到那个
标签: c++ boost boost-interprocess