我多线程发起6个线程乱跑时,除抛出异常0xc00000005,居然是在
EnterCriticalSection的时候,很奇怪,请教各位这是什么原因阿?我是正常的初始化了临界区的,调用的InitializeCriticalSection。就是几个线程乱跑时会随机出现这个问题。
我的操作系统是XPSP3
EnterCriticalSection的时候,很奇怪,请教各位这是什么原因阿?我是正常的初始化了临界区的,调用的InitializeCriticalSection。就是几个线程乱跑时会随机出现这个问题。
我的操作系统是XPSP3
解决方案 »
- 如何获取系统音量的初始值?
- 有关多文档的问题
- 让工具栏显示文字的问题!
- [HELP]把 Recordset 保存为 IStream 出错……
- 请问在MFC中如何添加文件说明和公司名?就是最终生成的应用程序图标上的
- CView如何清屏?
- 一个郁闷的问题,请有经验的朋友帮忙。
- 现用Install Shield 制作安装盘,如何通过ODBC建立的Access数据源
- 那里可以down到windows installer的win2000版
- outlook2003插件问题,急!
- 跪求带有3d Max SDK 的3d Max安装包,或者3d Max SDK安装文件也可
- 取得该设备接口路径的函数SetupDiGetInterfaceDeviceDetail()返回值为0
我的是XP系统,怎么便以时候好像不能使用这个函数阿。
网上查一查好像说是这个只能在2000和之前的操作系统上使用。
在主线程里先调了InitializeCriticalSection,然后再创建的6个子线程吗?
这到不是,这个临界区是被对象持有的,对象可以有很多个,6个线程根据业务随时处理不同的对象。
为了防止两个以上线程同时操作这个对象时,一些敏感的数据引起问题,就用临界区保护这个数据,要操作该对象的特定数据时候需要先Enter一下。
所以Initialize是在对象创建出来初始化时候做的。
比如,内存操作越界什么的.
我有一次也碰上这个问题,也是在EnterCriticalSection出现异常0xc00000005,而问题不在这上面,是我的内存操作越界,我的一个长度为50的数组,我执行了下面的操作:
TCHAR buff[50];
memset(buff,100,0);