精易论坛

标题: 【蠢新学汇编】多线程是否全部执行完毕 [打印本页]

作者: 笨来无一悟    时间: 2024-6-22 16:11
标题: 【蠢新学汇编】多线程是否全部执行完毕
之前也写过一个类似的例子 不是汇编版本的 需要支持库 现在优化一个汇编版本的 旧版的写法就可以扔了
  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
变量名类 型数组备 注
是否完毕逻辑型0 

子程序名返回值类型公开备 注
__启动窗口_创建完毕  
' 应用场景:需要等待多个线程全部执行完毕之后再执行接下来的其他操作
' 只要不是同时写入同一个数组成员 多线程不加许可证并不会导致报错或者出错 可放心食用
' 省去了进出许可区的耗时和用线程句柄判断线程状态的耗时 用程序集或者全局逻辑型数组进行判断速度更快
子程序名返回值类型公开备 注
执行完毕逻辑型 全真 返回真
参数名类 型参考可空数组备 注
任务状态逻辑型真 假
置入代码 ({ 54, 139, 117, 8, 62, 139, 54, 131, 198, 4, 62, 139, 14, 133, 201, 116, 13, 62, 139, 4, 142, 133, 192, 116, 5, 73, 227, 2, 235, 243, 201, 194, 4, 0 })
返回 ()  ' 全真 返回真 否则 返回假
' MOV ESI, DWORD PTR SS:[EBP+8]
' MOV ESI, DWORD PTR DS:[ESI]
' ADD ESI, 4
' MOV ECX, DWORD PTR DS:[ESI]
' TEST ECX, ECX
' JE END
' XH:
' MOV EAX, DWORD PTR DS:[ESI+ECX*4]
' TEST EAX, EAX
' JE END
' DEC ECX
' JECXZ END
' JMP XH
' END:
' LEAVE
' RET 4
子程序名返回值类型公开备 注
_启动_被单击  
变量名类 型静态数组备 注
计次整数型 
数量整数型 
如果真 (执行完毕 (是否完毕))
调试输出 (“急什么急 上一车砖头还没搬完”)
返回 ()  ' 可以在执行之前 判断上次执行的任务有没有完成 避免冲突 返回之前 要进行哪些操作 自己决定
数量 = 12345  ' 为了照顾小白 方便理解最后一个参数是啥
重定义数组 (是否完毕, 假, 数量)
计次循环首 (取数组成员数 (是否完毕), 计次)
处理事件 ()  ' 避免卡界面
启动线程 (&线程, 计次, )
计次循环尾 ()
循环判断首 ()
处理事件 ()  ' 避免卡界面
延迟 (500)  ' 检测间隔时长根据任务强度灵活修改
循环判断尾 (执行完毕 (是否完毕))
调试输出 (是否完毕, “砖头搬完了 工钱结一下”)
' 这儿写所有线程全部执行完毕之后再进行的某些操作
子程序名返回值类型公开备 注
线程  
参数名类 型参考可空数组备 注
编号整数型
延迟 (取随机数 (10, 80))  ' 模仿线程执行某些操作造成的耗时
是否完毕 [编号]  ' 每条线程执行完毕之后赋值为真



i支持库列表   支持库注释   
spec特殊功能支持库
EThread多线程支持库

多线程是否全部执行完毕.e

958.67 KB, 下载次数: 51, 下载积分: 精币 -2 枚

和上面的代码完全一样


作者: futiem    时间: 2024-6-22 17:17
多线程是否全部执行完毕
作者: futiem    时间: 2024-6-22 17:18
多线程是否全部执行完毕
作者: ouyasq    时间: 2024-6-22 17:19
感谢分享,很给力!~
作者: jtucar    时间: 2024-6-22 17:28
感谢分享,很给力!~
作者: xf702    时间: 2024-6-22 18:49
学习了。。。
作者: 2446789312    时间: 2024-6-22 19:12

作者: ctry78985    时间: 2024-6-22 20:23
感谢分享
作者: 夏亿    时间: 2024-6-22 21:57
感谢分享,很给力!~
作者: kanhaiyouyue    时间: 2024-6-22 22:02
有点意思
作者: shuya1    时间: 2024-6-22 22:06
感谢分享,很给力!~
作者: Av0x    时间: 2024-6-22 23:20
好得 我知道你是大佬了,等一个完整框架
作者: 396384183    时间: 2024-6-23 00:38
论坛有你更精彩
作者: 查过    时间: 2024-6-23 07:47
感谢您对论坛的支持!
作者: 豆豆灰常开心    时间: 2024-6-23 07:52
感谢发布原创作品,精易因你更精彩!6666666666666
作者: cf2006a    时间: 2024-6-23 08:02
mov esi, dword [ebp+0x08] mov esi, dword [esi] add esi, 0x04 mov ecx, dword [esi] test ecx, ecx je label2 label1: mov eax, dword [esi+ecx*4] test eax, eax je label2 loop label1 label2: leave  retn 0x0004
作者: 笨来无一悟    时间: 2024-6-23 08:21
cf2006a 发表于 2024-6-23 08:02
mov esi, dword [ebp+0x08] mov esi, dword [esi] add esi, 0x04 mov ecx, dword [esi] test ecx, ecx je l ...

当时写了三个版本不清楚是不是误差 单独判断ecx的值 最低耗时会低一些 平均的好像差别不大

第一个版本.png (23.9 KB, 下载次数: 0)

第一个版本.png

作者: year1970    时间: 2024-6-23 08:21
感谢分享
作者: 一指温柔    时间: 2024-6-23 08:41
感谢分享
作者: weihua2018    时间: 2024-6-23 13:40
效果怎么样
作者: ZHuanR    时间: 2024-6-23 16:41
新技能已get√
作者: shen110    时间: 2024-6-23 19:10
如果用来多线程访问网络,特别是代理型,你试试你的工作效率,有线程池为啥不用。
作者: wanghua2015    时间: 2024-6-23 19:29
感谢分享!
作者: static101    时间: 2024-6-24 00:28
这只能算是单线程循环执行吧,你转换一下思维看看我说的是不是
作者: 查过    时间: 2024-6-24 07:58
感谢您对论坛的支持!
作者: 豆豆灰常开心    时间: 2024-6-24 08:03
感谢楼主分享!
作者: 本森Bin    时间: 2024-6-24 08:30
感谢分享,很给力!
作者: axin666yes    时间: 2024-6-24 10:18
感谢分享,很给力!太棒了
作者: qq977352880    时间: 2024-6-25 08:30
这个的价值无法用言语形容,谢谢!

作者: 光影魔术    时间: 2024-6-25 13:04
感谢分享源码
作者: 无名霸道    时间: 2024-6-25 13:21
666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
作者: qq977352880    时间: 2024-6-27 02:30
很喜欢这种深入浅出的教学方式。

作者: shaojiecn    时间: 2024-7-3 01:47
支持开源
作者: jingyigufen    时间: 2025-3-22 23:28
谢谢楼主分享




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4