为实现多线程对一个全局结构数组的互斥访问,使用CRITICAL_SECTION,
由于数组项目比较多(100多个),看到有人的代码使用CRITICAL_SECTION数组,
然后访问时候使用
EnterCriticalSection(&CriGroup[nID%nCriCount]);
LeaveCriticalSection(&CriGroup[nID%nCriCount]);
对访问不同表项使用不同CRITICAL_SECTION.
我估计是为了减少等待进入的状况发生。但是有时候又要遍历整个表,他又使用另外的单个CRITICAL_SECTION(CriSingle)这样一来,就有可能进入CriSingle遍历整个表时候,其他线程进入CriGroup修改表项.
所以这里好象有问题.使用数组与使用单个CRITICAL_SECTION效率上有区别吗?
由于数组项目比较多(100多个),看到有人的代码使用CRITICAL_SECTION数组,
然后访问时候使用
EnterCriticalSection(&CriGroup[nID%nCriCount]);
LeaveCriticalSection(&CriGroup[nID%nCriCount]);
对访问不同表项使用不同CRITICAL_SECTION.
我估计是为了减少等待进入的状况发生。但是有时候又要遍历整个表,他又使用另外的单个CRITICAL_SECTION(CriSingle)这样一来,就有可能进入CriSingle遍历整个表时候,其他线程进入CriGroup修改表项.
所以这里好象有问题.使用数组与使用单个CRITICAL_SECTION效率上有区别吗?
解决方案 »
- vs2010下,pop3接收邮件的程序设计,stat发出后无响应
- 在VC的ATL编程中,如何使用ADO操作EXCELL?急!急!急!
- 运行 GetSystemTime 时出错
- 请问大家现在都用什么版本的VC++开发工具啊?
- WH_GETMESSAGE 钩子, 为什么无法丢弃消息
- 谁知道怎么写MSCOMM32.OCX?或是提供相关资料
- 请问如何在VC6.0中实现微积分计算? 急!
- 谁有从文件load jpg文件的代码,要求要有极高的效率!!!!
- 各位大侠帮帮忙!一个多线程与数据库问题,已经想了好几天了.(up有分)
- 关于CString的Format函数
- 非文本类型的文件能否作为字符串读取???
- 高手请进:关于excel模版在VC++中的动态使用
我也认为他这么想,但这样做的效果与采用单个CRITICAL_SECTION对象相比,
性能有很大的区别?好象没有理由,因为遍历也是经常的动作。
EnterCriticalSection(&CriGroup[nID%nCriCount]);
LeaveCriticalSection(&CriGroup[nID%nCriCount]);
遍历时用一个CRITICAL_SECTION(CriSingle)即可(应该不会死锁吧??....)