是否有相当于此"safe_read"调用的提升
Is there a boost equivalent to this "safe_read" call
我是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)
{
}
这将从代码中消除显式的mutex
和safe_access
函数,提供所需的同步。
我不认为它像你想象的那样工作,因为一旦safe_access函数返回,锁就被释放了。
相关文章:
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- 为什么使用 "this" 指针调用派生成员函数?
- 函数调用中参数的顺序重要吗
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 在c++类上调用void函数
- 为什么 std::unique 不调用 std::sort?
- 调用专用模板时出错"no matching function for call to [...]"
- 选择要调用的构造函数
- C++为什么尽管我调用了void函数,它却不起作用
- C++HTTP客户端在GET请求后挂起read()调用
- UNIX API 调用:使用 read() 函数打开文件并将其打印到屏幕上会增加额外的随机字符
- C++:std::istream read及其对std::streambuf underflow的调用
- 像 read() 、write() 这样的函数调用在 Linux 中是实际的系统调用吗?
- 如何阻止 Linux "read"系统调用阻塞?
- 在线程中调用boost::asio::read()会阻塞调用线程或进程
- 通过连续两次调用boost::asio::read来检索正确的数据
- C++ ifstream,ofstream:原始read()/write()调用和以二进制模式打开文件有什么区别?