Pthread用于许多类变量
pthread for many class variables
我有一个类,它有许多私有变量。每个都有getter和setter方法。我有很多线程可以访问setter方法和改变变量的值。不必在每个setter方法中编写mutex_lock和mutex_unlock,如何确保只有一个线程为给定变量设置值?(如果问题太幼稚,请原谅)
class MyClass {
private:
int var0,var1...upto var99
public:
int getVar0() { return var0 }
void setVar0(int x) { var0 = x }
.
.
.
}
MyClass mClass;
void *foo0() {
processMyClassObj0(); //does some process and sets some of 'var' variables of mClass
}
void *foo1() {
processMyClassObj1(); //does some process and sets some of 'var' variables of mClass
}
.
.
.
int main() {
pthread_t p[100];
pthread_create(&p[0],NULL,foo0,NULL);
pthread_create(&p[1],NULL,foo1,NULL);
pthread_create(&p[2],NULL,foo2,NULL);
.
.
.
pthread_create(&p[99],NULL,foo99,NULL);
pthread_exit(NULL);
}
你可以给你的setter一个"threadname",并与你想要修改的线程进行比较来改变你的值。
pthread_setname
pthread_getname
http://man7.org/linux/man-pages/man3/pthread_setname_np.3.html 如果p[n]
只使用varn
(其中n
={0..99}),则不需要任何同步机制。
:
如果可能的话,将变量声明为_Atomic
,否则保护访问(通常通过互斥锁)
相关文章:
- 查找后更改类变量
- 如何避免在仅标头库中C++类/变量重定义
- c++ 在非类函数中使用类变量
- 基于模板的类变量
- 分段 访问私有类变量时出错
- 为什么从另一个构造函数内部调用C++构造函数不修改类变量?
- 如何访问基类向量中的子类变量?(对于实体组件系统)
- 模板类变量作为非模板类的成员
- C++11 - 获取编译时的所有类变量,并在没有 Boost 的情况下为它们调用方法
- 如何在构造函数中访问类变量以分配它们,而无需在C++中使用此指针
- 类变量无法从类方法访问
- 指针作为类变量 Qt
- 为什么线程对类变量所做的更改没有影响?
- memcpy() 在一个类中被调用以复制到另一个类变量中后会引发异常
- C++:使用基类中的仅派生类变量
- 从静态成员函数访问私有非静态类变量 - C++
- 静态类变量的多重定义
- 使用 WindowSetup 类变量获取错误
- 将文本文件读入类变量 - c++
- Pthread用于许多类变量