天马阁

 找回密码
 立即注册
                                        →→→→→→→→→→→→ 1点击查看所有VIP教程目录长列表(总教程数269个) 2办理VIP详情进入 ←←←←←←←←←←←←
1 x64CE与x64dbg入门基础教程 7课 已完结 2 x64汇编语言基础教程 16课 已完结 3 x64辅助入门基础教程 9课 已完结 4 C++x64内存辅助实战技术教程 149课 已完结
5 C++x64内存检测与过检测技术教程 10课 已完结 6 C+x64二叉树分析遍历与LUA自动登陆教程 19课已完结 7 C++BT功能原理与x64实战教程 29课 已完结 8 C+FPS框透视与自瞄x64实现原理及防护思路 30课完结
64驱?封? 9 64反驱? 10 64位V? 11 绝? 12 ???课?
13 64透 ? 14 64U ? 15 64Q ? 16 64功 ?
17 64U ? 18 64模 ? 19 64多 ? 20 64网 ?
21 64注 ? 22 64火 ? 23 64棋 ? 24 64自二链L?
25 64破 ? VIP会员办理QQ: 89986068   
【请先加好友,然后到好友列表双击联系客服办理,不然可能无法接受到信息。】
27 加入2000人交流群637034024 3 28 免责声明?
查看: 4368|回复: 0

易语言标签反馈在多线程中的应用(解决多线程不稳定的问...

[复制链接]

10

主题

0

回帖

12

积分

编程入门

Rank: 1

天马币
20
发表于 2024-3-5 09:22:44 | 显示全部楼层 |阅读模式
一直以来,都在为易语言的多线程不稳定发愁。
后来学习了其它多种语言,知道了所有原生程序开发工具中,都是使用了操作系统原生的API操作多线程。充其量是做了一点包装。
经过不断的学习研究,知道了以前多线程使用了一些问题所在:



1。 不要在线程中调用主线程UI控件(大忌!)
2。 不加处理在线程中监用共用性质的全局变量
3。不加处理在多个线程共用一个子程序(大忌!),这在多CPU环境下会出现代码重入的严重问题。
4。一些易语方的第三方模块,或者有部分易语言自身提供的模块,有些功能并不是线程安全的。时至今日,易语言官方也没有指出什么库与模块是线程安全的,更别说第三方的模块提供者。
5。粗暴的线程终止方式,大部分人使用错误,记住,终止线程的系统API也不是安全的。

本文所说的标签反馈事件可以完美的解决我所说的第一点,即多线程中信息输出到主线程界面控件的问题。
有时间我再指出其它问题的解决方案。

源代码:
.版本 2
.支持库 spec
.支持库 iext

.程序集 窗口程序集1
.程序集变量 工作线程句柄, 整数型

.子程序 _按钮1_被单击
.局部变量 id, 整数型
.局部变量 安全属性, SECURITY_ATTRIBUTES
工作线程句柄 = CreateThread (安全属性, 0, 到整数 (&工作线程), 0, 0, id)

.子程序 工作线程, 整数型
.局部变量 i, 整数型
.局部变量 地址, 整数型

.计次循环首 (1000, i)
地址 = 取变量地址 (i)
输出调试文本 (i)
SendMessage (_启动窗口.标签1.取窗口句柄 (), 32885, 地址, 0)
.计次循环尾 ()
返回 (88)

.子程序 _标签1_反馈事件, 整数型
.参数 参数一, 整数型
.参数 参数二, 整数型
.局部变量 j, 字节集
.局部变量 i, 整数型

j = 指针到字节集 (参数一, 4)
i = 取字节集数据 (j, #整数型, )
标签1.标题 = “信息:” + 到文本 (i)
状态条1.置文本 (0, “信息:” + 到文本 (i))
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

天马阁|C/C++辅助教程|安卓逆向安全| 论坛导航|免责申明|Archiver||网站地图
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表天马阁立场!
任何人不得以任何方式翻录、盗版或出售本站视频,一经发现我们将追究其相关责任!
我们一直在努力成为最好的编程论坛!
Copyright© 2010-2021 All Right Reserved.
快速回复 返回顶部 返回列表