0

如何防止其他线程访问或读取对象的资源?例如,在一个方法中,我想在方法调用访问对象的资源时锁定该方法,以便其他线程在调用该方法时不会访问实例的资源,而第一个线程访问它?

例如,

int CFoo::FooReadData( int tag )
{
    std::map<int, int>::const_iterator iter = resource.find(tag);

    return *iter.second;
}

在上述方法中,我想防止其他调用线程访问“资源”而其他线程访问它。

谢谢。

4

1 回答 1

2

您可以使用英特尔 TBB 等 ThreadSafe 数据结构。

但在你的例子中:

定义互斥锁:

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

于 2013-10-19T10:08:02.887 回答