gpt4 book ai didi

c++ - 防止其他线程读取资源

转载 作者:行者123 更新时间:2023-11-28 03:06:49 25 4
gpt4 key购买 nike

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

例如,

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

return *iter.second;
}

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

谢谢。

最佳答案

您可以使用像 Intel 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 之类的数据类型)

关于c++ - 防止其他线程读取资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19464744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com