防止其他线程读取资源
Prevent Other Thread To Read Resources
如何
防止其他线程访问或读取对象的资源?例如,在一个方法中,我想在方法调用访问对象资源时锁定该方法,以便另一个线程在调用该方法时不会访问实例的资源,而第一个线程访问它?
比如,
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
)
相关文章:
- 理解boost::asio-async_read在无需读取内容时的行为
- 具有瞬态资源的RAII类
- 使用新行和不使用新行读取文件
- 读取文件并输入到矢量中
- 用c++从输入文件中读取另一行
- 读取文件的最后一行并输入到链接列表时出错
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 跨线程共享读取资源
- 在 MFC 应用中定义和读取用户定义的资源
- C++ Android 资源管理器从应用内部目录中读取文件
- 逐行读取用户定义的文本资源文件
- 正在从可执行资源中读取位图
- 如何读取资源管理器文件夹地址
- 读取 mfc 资源 dll 内容
- 从资源中读取文本文件时的奇怪行为
- 防止其他线程读取资源
- 从C++中非常大的文本文件资源读取
- 高效读取共享资源
- 读取一个嵌入式文本文件资源Visual Studio c++
- 无法读取外部类型和资源系统的文件