C++ 多线程加锁问题
我现在有一个类A被多线程访问,每个线程通过类A访问A的内部变量,只是读取,需要加锁吗?如果需要加锁用以下方式加锁有没有问题。classA{public:A();~A();...
我现在有一个类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;
} 展开
如果需要加锁用以下方式加锁有没有问题。
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;
} 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询