多个全局变量要在线程里使用,需要定义几个临界区(TCriticalSection)还是一个?我现在每个全局都定义了一个。请高手指教/ ( 积分: 50 )

A

ansili

Unregistered / Unconfirmed
GUEST, unregistred user!
多个全局变量要在线程里使用,需要定义几个临界区(TCriticalSection)还是一个?我现在每个全局都定义了一个。请高手指教/
代码:
extern TList *OnlineUserList;
extern TList *PlayWindowList;
extern TCriticalSection *ProtectSectionOnlineUserList;
extern TCriticalSection *ProtectSectionPlayWindowList;
extern TQueue *UserDownQueue;
//需要下载的用户队列
extern TQueue *DownFileQueue;
//FTP下载队列
extern TQueue *DecodeQueue;
//解码队列
extern TQueue *PlayQueue;
//播放显示队列
extern TCriticalSection *ProtectSectionUserDown;
//临界区
extern TCriticalSection *ProtectSectionDownFile;
//临界区
extern TCriticalSection *ProtectSectionDecode;
//临界区
extern TCriticalSection *ProtectSectionPlay;
//临界
 
多个全局变量要在线程里使用,需要定义几个临界区(TCriticalSection)还是一个?我现在每个全局都定义了一个。请高手指教/
代码:
extern TList *OnlineUserList;
extern TList *PlayWindowList;
extern TCriticalSection *ProtectSectionOnlineUserList;
extern TCriticalSection *ProtectSectionPlayWindowList;
extern TQueue *UserDownQueue;
//需要下载的用户队列
extern TQueue *DownFileQueue;
//FTP下载队列
extern TQueue *DecodeQueue;
//解码队列
extern TQueue *PlayQueue;
//播放显示队列
extern TCriticalSection *ProtectSectionUserDown;
//临界区
extern TCriticalSection *ProtectSectionDownFile;
//临界区
extern TCriticalSection *ProtectSectionDecode;
//临界区
extern TCriticalSection *ProtectSectionPlay;
//临界
 
我不是高手,但我觉得应该每个都定义
 
我觉得一个临界区就行了
临界区跟这些变量没多大关系,这是我的理解
 
应该是多个
 
那位高手,到底是多个还是一个?
 
是否定义临界区,要看是怎么访问该全局变量的.
如果各个访问之间可能存在读写冲突,那就应该为
该变量设置一个临界区.
 
多人接受答案了。
 
顶部