读书人

【问】关于全局变量线程中调用的不解

发布时间: 2012-09-18 16:21:42 作者: rapoo

【问】关于全局变量线程中调用的疑惑
小弟我把全局变量和一些全局函数封装在一个类里如:

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变量,这样会出问题吗

[解决办法]
若两个线程同时调用CGlobalData类,一个调用CGlobalData里的xx1变量,一个调用xx2变量,这样是不会出问题的,如果多个线程会同时修改同一个成员变量则需要保护,其他情况一般不需要保护

读书人网 >VC/MFC

热点推荐