是否有相当于此"safe_read"调用的提升

Is there a boost equivalent to this "safe_read" call

本文关键字:调用 read safe 相当于 是否      更新时间:2023-10-16

我是boost threading的新手(来自Win32 threading,这可能毁了我)。

所以我试着做一个更"RAII"的方式来检查工作循环应该仍然在进行。所以我写了这个简单的函数:

template<typenameT> 
T safe_read(const T& t,boost::mutex& mutex)
{
    boost::interprocess::scoped_lock lock(mutex);
    return t;
}

是否有一个与此等效的boost,因为我似乎一直在使用它?这个电话可以吗?

这个想法是能够安全地做到这一点,而不使用一个奇怪的锁:

while(!safe_read(this->is_killing_,this->is_killing_mutex_))
{
    DoWork();
}

boost::atomic<bool>在boost v1.53.0中添加,基于c++11 std::atomic s。例如:

#include <boost/atomic.hpp>
boost::atomic<bool> is_killing (false);
while (!is_killing)
{
}

这将从代码中消除显式的mutexsafe_access函数,提供所需的同步。

我不认为它像你想象的那样工作,因为一旦safe_access函数返回,锁就被释放了。