易语言使用多线程闪退解决方法:CPU亲和性

作者: admin 分类: 易语言 发布时间: 2019-01-28 11:15

之前在另外一篇文章中提到过使用许可证使用多线程,保证全局变量或者组件不受到影响:易语言多线程与许可证,写好程序后,发给网友使用,发现出现闪退的问题,本来这个程序放电脑上要连夜跑的,结果第二天早上一看,程序不在了,也没有任何提示。

开始以为是不是自己哪里写的有问题,或者是易语言的多线程BUG,后面百度查询以后,发现是CPU亲和性的问题,使用网友提供的方法,解决了这个问题:

一,引入SetProcessAffinityMask这个API

 

API函数引入截图

DLL命令名称和参数名称是可以随便写的,但是库文件名和库中对应的命令名是不能随便写的,因为系统会根据你写的库文件名去找对应的命令名,参数类型也是不能更改的。

二,在程序入口引入SetProcessAffinityMask (-1, 1)

这个括号中的-1,代表的应该就是程序自身的句柄,后面的1代表的是使用第一个CPU,我的理解是这样的,但是不知道是不是有错误。

函数的使用范例

我看到有的文章中说的是,只要在程序启动的时候调用一次就可以了,比如在窗口创建成功以后调用就可以了,我第一次使用是在每个线程内部调用一次,测试跑了一两天都没有闪退情况了(请别人测试的)。不过估计只需要在调用线程前调用一次这个函数就可以了。

标签:

相关文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Powered by 草根站长笔记 © 2015-2020 草根站长笔记 Inc.版权所有,禁止转载