我现在有一个类A被多线程访问,每个线程通过类A访问A的内部变量,只是读取,需要加锁吗?

如果需要加锁用以下方式加锁有没有问题。

class A{
public:
A();

~A();

public:
std::hash_map<__int64,LPVOID> act_var;

public:
LPVOID read(__int64);

private:
kelib::mutex::MutexLock mutex_;
};

A::A(){}
A::~A(){}
LPVOID A::read(__int64 index){
kelib::mutex::MutexLockGuard lock(mutex_); //加锁

std::hash_map<__int64,LPVOID>::iterator iter=act_var.find(index);

if(iter!=act_var.end()){

return (*iter).second;

}

return NULL;

}

RISEBY
浏览 103回答 2
2回答

小唯快跑啊

Java的多线程两种方式。一是准备好类从Thread类继承。其一是实现Runnable接口。前者是线程运行的格式(如果该实例是线程t):t.start();在一个新的线程(吨)。开始的形式,后者()。

桃花长相依

我有个疑问,你只加锁,不解锁吗?还是说你的解锁没写出来?而且,你没有修改要读取的变量的话,是不是就可以不用锁定了?
打开App,查看更多内容
随时随地看视频慕课网APP