如何阻止其他线程访问或读取对象的资源?比如在一个方法中,我希望在方法调用访问对象资源时锁定该方法,以便在调用该方法时另一个线程在第一个线程访问它时不会访问实例的资源?
例如,
int CFoo::FooReadData( int tag )
{
std::map<int, int>::const_iterator iter = resource.find(tag);
return *iter.second;
}
在上面的方法中,我想阻止其他调用线程访问“资源”,而其他线程访问它。
感谢。
答案 0 :(得分:2)
您可以使用ThreadSafe数据结构,例如Intel TBB。
但在你的例子中:
定义互斥锁:
std::mutex m;
int CFoo::FooReadData( int tag )
{
std::lock_guard(m);
std::map<int, int>::const_iterator iter = resource.find(tag);
return *iter.second;
}
(但是,您需要使用c ++ 11编译器来使用std::mutex
)