【问】关于全局变量线程中调用的疑惑
小弟我把全局变量和一些全局函数封装在一个类里如:
- C/C++ code
class CGlobalData { public://各种变量 xxx xxx; }只声明一个变量来管理所有全局变量
- C/C++ code
CGlobalData g_GlobalData;
这样每次用哪个变量就g_GlobalData.xxx
然后我就有疑问了,如果程序有好几个线程都会大量调用g_GlobalData这个全局变量,程序会不会出错?会不会几个线程同时调用g_GlobalData时会出错,难道要声明一个CCriticalSection,每次调用时都lock调用后unlock一下?
[解决办法]
当然有可能会因为线程不同步而造成错误
所以最好使用临界去/互斥变量/信号量等机制去同步
[解决办法]
在多线程的情况下肯定要做好同步工作,要不然肯定会出错。
[解决办法]
[解决办法]
若两个线程同时调用CGlobalData类,一个调用CGlobalData里的xx1变量,一个调用xx2变量,这样是不会出问题的,如果多个线程会同时修改同一个成员变量则需要保护,其他情况一般不需要保护