我有一个拥有自己的工作线程的类,并且该类的一些成员变量在主线程和worker之间共享。如何使用互斥锁仅锁定正在共享的成员变量?
例如,这不起作用(因为块范围在任何函数之外)。
class Foo {
public:
// Some stuff
private:
boost::thread *m_worker;
Bar m_bar_nonshared;
{
boost::mutex m_mutex;
Bar m_bar_shared;
}
};
答案 0 :(得分:0)
互斥锁不会锁定成员变量,它会锁定代码。锁定成员变量的唯一方法是锁定访问它的唯一代码。
也就是说,将锁定置于访问函数(获取/设置)中,并且不允许以任何其他方式访问成员。