防止其他线程读取资源

Prevent Other Thread To Read Resources

本文关键字:读取 资源 线程 其他      更新时间:2023-10-16
如何

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

比如,

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

在上面的方法中,我想防止其他调用线程访问"资源",而其他线程访问它。

谢谢。

您可以使用 ThreadSafe 数据结构,如英特尔 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