标签:
最近在写多线程一采集程序时遇到了程序崩溃自动关闭的显现,在网上查了下原因和解决方法,这里记录下,以备后用。
一般出现这种情况多在生成了程序后,调试时候数据不太多一般察觉不到。其原因是多线程对于双核CPU亲和性上的问题。解救方法如下:
先加入DLL:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
.版本 2 .DLL命令 SetProcessAffinityMask, 整数型, , , 公开, 设置CPU亲和性 进程句柄 返回CPU号 .参数 hProcess, 整数型 .参数 hProcess, 整数型 .DLL命令 SetThreadAffinityMask, 整数型, , , 公开, 设置CPU亲和性 线程句柄 .参数 hProcess, 整数型 .参数 Mask, 整数型 .DLL命令 GetCurrentProcess, 整数型, , , 公开, 获取当前进程的一个伪句柄 一般是-1 .DLL命令 GetCurrentThread, 整数型, , , 公开, 获取当前线程的一个伪句柄 一般是-2 |
之后只需要在易代码开头(如__启动窗口_创建完毕时)前加入如下命令:
1
|
SetProcessAffinityMask (-1, 1) |
现在再生成程序测试下,问题解决了吧?
希望对大家有用,最后感谢原作者。
标签:
原文地址:http://www.cnblogs.com/xiaoa/p/4297896.html