我试图了解开发线程安全应用程序的正确方法。
在当前项目中,我有以下课程:
class Test
{
public:
void setVal(unsigned int val)
{
mtx.lock();
testValue = val;
mtx.unlock();
}
unsigned int getVal()
{
unsigned int copy = testValue;
return copy;
}
private:
boost::mutex mtx;
unsigned int testValue;
}
我的问题是:上面的方法 Test::getVal() 在多线程环境中是线程安全的,还是必须在复制之前锁定?我读过一些关于牛的文章,现在我不确定。
谢谢!