gpt4 book ai didi

c++ - C++11 中的 BOOST scoped_lock 替换

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:20:09 24 4
gpt4 key购买 nike

我面临这样一种情况,我必须用 C++11 中的等效项替换 BOOST scoped_lock。在 visual studio 2013 下。由于 c++11 不支持 scoped_lock,我不确定下面的替换代码是什么。我应该选择 lock_guard 还是 try_lock?

boost::mutex::scoped_lock objectLock(ObjectVectorMutex, boost::try_to_lock);
if (objectLock) {
// ...
}

在代码中我有以下“等待”语句

if (ObjectsCollection.empty()) {
// This is where we wait til something is filled
MotionThreadCondition.wait(objectLock);
ElapsedTime = 0;
}

非常感谢任何指导。

最佳答案

使用std::unique_lock而不是 scoped_lock:

std::unique_lock objectLock(ObjectVectorMutex, std::try_to_lock);

MotionThreadCondition 将是 std::condition_variable ,使用方法相同。但是,您应该使用 while(condition) 来处理 spurious wakeups 而不是 if(condition)正确。

关于c++ - C++11 中的 BOOST scoped_lock 替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22676871/

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