解决易语言多线程出错的问题

log_Content

最近在给客户写软件,发现我这边一直没有发现出错的问题,但是客户的软件一运行多线程就出错,一直找不到问题,找了好久才找到解决方法,原来是CPU的问题,多线程对于双核CPU亲和性上有问题,现在找到问题的解决方法,顺便记录一下,或许有朋友遇到同样的问题,可以一起参考.

DLL命令:

.版本 2

.DLL命令 SetProcessAffinityMask, 整数型, , , 公开, 设置CPU亲和性 进程句柄 返回CPU号

.参数 hProcess, 整数型

.参数 hProcess, 整数型

.DLL命令 SetThreadAffinityMask, 整数型, , , 公开, 设置CPU亲和性 线程句柄

.参数 hProcess, 整数型

.参数 Mask, 整数型

.DLL命令 GetCurrentProcess, 整数型, , , 公开, 获取当前进程的一个伪句柄 一般是-1

.DLL命令 GetCurrentThread, 整数型, , , 公开, 获取当前线程的一个伪句柄 一般是-2

将以下代码放到易代码开始即可:

SetProcessAffinityMask (-1, 1)

以上就是解决问题的全部内容,感谢大家对我们的支持。

(0)

相关推荐

  • 一步一步跟我学易语言之初学者的常见问题

    1.初始配置信息 本章及以后所有叙述都假设在安装易语言后,没有使用"工具"→"系统配置"菜单项修改过系统的初始配置信息.如果不能确定,请在启动易语言的同时一直按住Shift键,出现系统界面后再放开,此时将自动清除以前的设置信息. 2.如何去除底图 有时在窗口属性里加了一幅图,现在想去掉,但是没有那个选项,总显示"有数据",此时请选中该属性后直接按Delete键.在最新的版本中,可以用鼠标右键弹出删除的命令. 3.如何消除标签框中"标签&

  • 解决打开易语言配置支持库全选后崩溃问题

    1:首先鼠标右键点击"我的电脑(计算机)",点击属性(win8系统右击左下角的传统图标就能打开控制面板) 左上角有个"高级系统设置"弹出后选择 高级 点击"性能"那个板块的"设置..." 点击上面的"数据执行保护" 选"为除下列选定程序之外的所以程序和服务启用 DEP(U)" 点击"添加" 然后看看你的易语言在哪个目录,添加进去就OK 2:如果还是出现运行停止或崩溃请

  • 浅析易语言外部判断程序超时防卡住问题

    其实找了很久也没有找个好的方法防止卡住,如果是网页访问的话精益模块以前老版本的模块有延迟超时的命令集成.新的就没有了~~所以很郁闷. 实验了很多方法最后还是自己摸索了一下 办法是用一个时钟强行再次运行子程序 首先子程序中用静态变量加判断来达到循环效果 然后时钟周期设置为想要超时跳过的时间,然后把启用线程运行子程序,延时几秒,销毁线程. 个人感觉时钟每次运行就像是加载了一个内存运行的线程,运行启动子程序销毁子程序线程的命令.他不管程序运行完没有都会再次循环运行.而前面没运行完的好像会在内存中慢慢运

  • 解决WIN7中易语言的显示问题

    WIN7 用AERO主题,打开易语言后看不到控件的调节框,如下图 方法1:把性能选项中的"启用桌面组合"的勾去掉后,显示正常 方法2:易语言启动快捷方式,右键点属性----选兼容性----禁用桌面元素(打钩) 但是去掉"启用桌面组合"后就没有aero的玻璃效果了,用WIN7要有玻璃效果,又有上图那个调节的框框正常显示,我也不知道有什么好的方法. 以上就是本次介绍的全部内容,感谢大家对我们的支持.

  • 解决易语言编程乱码的问题

    因为易语言不支持Unicode,大家编写的程序在台湾或是香港等地使用的时候常遇到的问题就是乱码,因为那里是繁体字系统. AppLocale一款由微软出品的解决乱码的软件.微软为XP专门制作了Microsoft AppLocale这款软件,用来解决汉字的编码问题. 多语言支持工具,可以让非Unicode的软件在Windows XP/2003上运行,即可以同时执行简繁体日文等各种语言的软件:不管是日文.韩文.法文都可适用,任何文字编码的程序都借由它来正确地显示文字,享受原本只有Unicode的程序才

  • 详解易语言静态翻译问题

    啊哈我试试看自己和LIBC.lib混合LIBCMT.lib,放在LIBC.LIB结果大吃一惊 1. 首先找到文件LIBC.LIB和LIBCMT.LIB,你可以在e目录里面使用windows搜索.......看不到的windows搜索的证明你傻不拉几的. 2.首先打开LIBCMT.LIB和LIBC.LIB复制LIBCMT.LIB所有压缩文件到LIBC.LIB里面. 3.然后选择ZIP然后确定7z为压缩,选择ZIP确定. 4. 混合完成删除把LIBC.ZIP防在Lib文件里面,,,,,,?:\e\V

  • 易语言开发中的问题总结

    大家在用易语言写程序的时候会遇到各种问题,甚至有些问题不知道原因会让你抓狂,这里就介绍易语言的各种疑难杂症的解决方法. 1.如图,意为:系统被修改,请恢复这些修改,运行终止(操作系统受损的一种) 1.是否添加了个别Windows7系统不支持的组件 如:VCL :2.在程序关闭的时候加个 "组件.销毁"或者"结束":3.这个提示也更操作系统有关系,如果使用的是精简版系统 可以考虑换:4.系统权限 程序无权用户写 system32目录:5.下载的易语言版本里部分支持库无

  • 解决易语言多线程出错的问题

    log_Content 最近在给客户写软件,发现我这边一直没有发现出错的问题,但是客户的软件一运行多线程就出错,一直找不到问题,找了好久才找到解决方法,原来是CPU的问题,多线程对于双核CPU亲和性上有问题,现在找到问题的解决方法,顺便记录一下,或许有朋友遇到同样的问题,可以一起参考. DLL命令: .版本 2 .DLL命令 SetProcessAffinityMask, 整数型, , , 公开, 设置CPU亲和性 进程句柄 返回CPU号 .参数 hProcess, 整数型 .参数 hProce

  • 解决易语言支持库配置出错退出

    Windows2003系统默认启用了"数据执行保护" 所以我们的易语言无法进行支持库配置,常见的表现为:执行支持库配置时候,程序意外退出,检查系统日志,没有任何日志存在. 比较好的解决办法为: 1.右击"我的电脑"-"属性"-"高级"-"性能"下的"设置"-"数据执行保护" 2.点击"添加",选择易语言的主程序位置,例如:C:\Program Fi

  • 解决易语言调试的时候提示不能写出临时文件

    小编在测试易语言程序的时候,出现过"不能写出临时文件"这个错误,在网上找了很久,总结了解决办法. 易语言的运行权限不够.找到易语言的安装目录,右键"e.exe",点击"属性".就可以了 以上的方法很简单,大家测试以下,感谢大家对我们的支持.

  • 易语言多线程多任务下载器的代码

    多线程多任务下载模块源码 1.DLL命令表 .版本 2 .DLL命令 InternetGetConnectedStateHTTP, , "Wininet.dll", "InternetGetConnectedState", 公开 .参数 lpdwFlags, 整数型, 传址 .参数 dwReserved, 整数型 .DLL命令 InternetOpenAHTTP, 整数型, "Wininet.dll", "InternetOpenA&q

  • 简单的易语言多线程应用实例

    多线程确实挺复杂的,洪雨不是很了解,也不想深入了解 这里只是把主要的命令和重点记录一下. 主要流程就是 1.启动窗口创建完毕 创建许可证 2.启动窗口将被销毁 删除许可证 3.一个线程操作的时候要 进入许可区 4.操作完后要 退出许可区 操作的数字最好用局部变量来装 信息框要在调用标签反馈事件 可用支持库的,也可用精易模块"类_线程池",也可用精易的模块的子程序 严格按照流程来,就不容易崩溃了 以上就是关于多线程应用实例的知识内容,感谢大家对我们的支持.

  • 解决易语言转换到C++ 自定义数据类型

    自定义数据类型如下 .版本 2 .数据类型 数据 .成员 坐标, 坐标_数据类型 .数据类型 坐标_数据类型 .成员 x, 小数型 .成员 z, 小数型 .成员 y, 小数型 这里的自定义数据类型下的"数据"类型下的"坐标"成员引用自定义数据类型"坐标_数据类型" 子程序如下 .版本 2 .子程序 自己数据 .参数 返回数据, 数据, 参考 返回数据.坐标.x = 1 返回数据.坐标.z = 2 返回数据.坐标.y = 3 这里的子程序内的参数&

  • 解决易语言空壳程序360误报

    空壳程序定义为,程序没有任何组件,没有任何代码,没有自动的加花. 1.直接生成,被主动防御杀. 2.加入启动窗口创建完毕和启动窗口将被销毁,被主动防御杀 3.去掉勾选 配置中写入版本信息,直接生成,免杀 4.加入启动窗口创建完毕和启动窗口将被销毁,去掉勾选 配置中写入版本信息,直接生成,免杀 5.直接生成,勾选写入版本信息,但稍微添加版本信息,例如:填写了程序名称.免杀 6.加入启动窗口创建完毕和启动窗口将被销毁,勾选写入版本信息,但稍微添加版本信息,例如:填写了程序名称.免杀 结论,默认的版本

  • 详解易语言启动多线程

    用易语言写多线程应用要么使用多线程相关的api,支持库或模块,其实那些支持库或模块也都是封装的api,但是要比api使用方便. 总体来说易语言官方的多线程支持库要比一些杂七杂八的模块好多了. 支持库勾选上之后就可以使用易语言的多线程支持库了. 首先看用易语言多线程支持库创建线程的命令:启动线程: 命令名:启动线程 创建并启动一条线程,可重复使用以创建多条线程,成功返回真,失败返回假. 参数 数据类型 说明   参数<1>的名称为"欲执行的子程序" 子程序指针(SubPtr)

  • 易语言关闭多线程句柄方法

    命令名 :关闭线程句柄 返回真表示已成功关闭线程句柄.在Linux下,如果线程已经结束,本命令可能返回假.本命令为初级命令. 参数 数据类型 说明 线程句柄 整数型(int) 可通过"启动线程"的第三个参数获取线程句柄. 使用例子: .版本 2 .支持库 EThread .程序集 程序集1 .程序集变量 线程句柄, 整数型 .子程序 _启动子程序, 整数型, , 本子程序在程序启动后最先执行 启动线程 (&子程序1, , 线程句柄) 关闭线程句柄 (线程句柄) 返回 (0) '

随机推荐