乐易论坛-乐易网易语言培训教程火山PC视窗中文编程交流论坛

 找回密码
 立即注册

手机号登录

用手机号号登陆

微信登录

微信扫码,快速开始

QQ登录

用QQ账号登陆

办理VIP,定制软件,报名培训联系QQ[重磅]2024年实地培训高清培训目录火山PC版乐易模块使用教程
请牢记揰掵佲的QQ号1615457736 1615457734 其他都是骗子有了火山,易语言是否还有必要学习吗?易语言0基础入门课程
火山PC视窗0基础入门课程易语言外挂0基础入门课程火山PC视窗火山HOOK入门课程
易语言误报处理课程QQ空间POST课程2022年火山PC易语言POST系列课程
Android逆向Jeb动态调试0基础课程QQ邮箱网页POST课程WeChat个微Hook实战课程
百日Js加密分析实战课程(无密下载)QQ群POST课程h5游戏WebSocket逆向视频
JavaScript加密特训课程易语言汇编快速入门课程破解实战系列课程
[2024年]火山PC0基础x64位游戏内存辅助开发教程手游模拟器脚本0基础课程易语言加密防破解0基础入门课程
广告位招租联系QQ1615457736  
查看: 14110|回复: 2

[个人原创] 读学易语言第六章|阿正_简析多线程

[复制链接]

[个人原创] 读学易语言第六章|阿正_简析多线程

[复制链接]
已绑定手机
阿正
等级头衔

等級:顶级Vip

Rank: 14Rank: 14Rank: 14Rank: 14

积分成就
易币
贡献
主题
精华
金钱
积分
1984
注册时间
2015-11-21
最后登录
1970-1-1

勋章墙

2017-3-19 16:14:31 | 显示全部楼层 |阅读模式

据统计90%查看本帖的人,都已经注册本站了哦

您需要 登录 才可以下载或查看,没有账号?立即注册

×
读学易语言第六 | 阿正


简析多线程逻辑








本章适用于有一定易语言基础想发展学习post方面的人

阅读,文章根据个人学习经验所写,如果有错误请指出。


QQ交流群:308780188


阿正QQ:964269020


公众号:阿正易语言


博客 www.eyuyan.vip


看了上一章,很多人肯定很逼。那么这章我们就来结合简单的实例来了解下

多线程。


首先我们来看看之乎者也大小姐的多线程(人稍加改动版本)









































































































从截图可以看出,这份多线程采用的是---按钮启动一个线程(控制线程)----





后通过相关变量存句柄、传参数、判断线程状态---启动工作线程








首先,我们来说第一步(为什么用启动线程的方式来启动总控制线程)








.版本 2





.DLL命令 CreateThread, 整数型, "kernel32.dll", "CreateThread", , , 建立新的线程


    .参数 lpThreadAttributes, 整数型, , 默认SECURITY_ATTRIBUTES结构


    .参数 dwStackSize, 整数型, , 设置初始的大小,以字节为单位,如果为0,那么

默认将使用与调用该函数的线程相同的空间大小。任何情况下,Windows根据需

要动态延长堆栈的大小


    .参数 lpStartAddress, 子程序指针, , 指向线程函数的指针,形式:@函数名,函数

名称没有限制,但是必须以下列形式声明


    .参数 lpParameter, 整数型, , 向线程函数传递的参数,是一个指向结构的指针,不

需传递参数时,为NULL


    .参数 dwCreationFlags, 整数型, , 线程标志,0立即激活,1表示启动后处于挂起状态

---线程恢复


.参数 lpThreadId, 整数型, , 保存新线程的id   线程句柄








大家注意,这里创建出来的线程,是返回了线程句柄的,作用就是在于这个句

柄,我们都知道,线程可以暂停、挂起、许可区等操作,那么把这个总控以线程的

方式启动,并且获得线程句柄,那么就是为了以后的暂停、结束等操作。





第二步是总控制里面的操作:


在总控制里面,我们首先确定的是需要启动的线程数、线程数量这两个关键点

,同时也要创建完我们的许可证、线程句柄数组








我们先来看这里的单个线程的操作,我们先使用打开内存文件()这个命令得

到一个内存地址,然后通过写出数据()这个命令往这个地址里面写出我们想要的

数据。通过这样的方式可以满足我们大量的数据交互。因为可以发现,这个写出数

据是没有上限的(但是局限在于32位的进制限制等等,建议不要写出超过3M的数

据),但是对于我们只要传过去一个序号、一个账号这些还是能够满足的。


通过易语言自带的启动线程来启动,然后返回的句柄就添加进我们建立好的句

柄变量数组,这样就把这个句柄存起来了,便于我们后面的对线程的操作。


启动好线程后,我们在局部的当前启动数量这个也需要加一,毕竟这个线程数

量我们还是得要控制的。


第三步:


接下来就是主要判断的控制了








我们通过判断当前启动数量和我们需要启动数量相同的时候,我们就开始去判

断我们线程的运作状态,,核心命令是  线程_等待()    apiWaitForSingleObject (线

程句柄数组 [局_计次], 25000)





这个命令需要两个参数,参数一是线程句柄,线程等待时间  毫秒





这份命令是线程等待2.5秒后,就去结束线程,因为这里只是简单的本地组件的

操作,没有涉及其他,但是这个在于网页访问,接码打码的时候,是肯定不行的。


因为


如果一个线程执行时间平均是20秒,万一卡了一下,到了30秒,那么你20秒的

时候就结束了,那么肯定操作不玩


如果线程10秒就操作完了,但是还是要等待10秒才能继续下面的操作,那么就

相当于浪费了时间





综上所诉的问题我会在后面贴出我的解决方案,能够在线程操作完毕0.1秒内进

行下一步,同时对于超时的也会知己结束,判断更加精准。





第四步:


工作线程里面的数据处理,前面第二步里面我们启动工作线程的时候,我们传

入了文件号参数,那么我们就要去工作线程里面取出我们的数据来进行操作。








通过截图我们可以看到,首先我们数据这里是放在了许可区,这里是防止数据

混乱的,然后移到文件首() 来初始化数据,然后通过读入文件()命令来导出我们的数

据。记得一定要关闭文件()不然会因为文件没有关闭,内存的加大,然后导致软件的

崩溃,然后退出许可区,这样我们就拿到了我们需要的数据,这样我们就可以去愉

快的操作了。








总结下:准备工作线程的数据---启动工作线程控制判断工作线程状态





工作线程:获取数据,销毁文件,防止串号








本章到此结束,下一章我们继续讲解完善这份多线程的bug。






阿正QQ 964269020  打赏支付宝 964269020@qq.com *






回复

使用道具 举报

已绑定手机
Q363846184
等级头衔

等級:编程入门

Rank: 4

积分成就
易币
贡献
主题
精华
金钱
积分
975
注册时间
2016-5-31
最后登录
1970-1-1

勋章墙

2017-3-20 01:03:57 | 显示全部楼层
哈哈!又更新了,收藏了.
回复

使用道具 举报

已绑定手机
dzpos
等级头衔

等級:编程入门

Rank: 4

积分成就
易币
贡献
主题
精华
金钱
积分
455
注册时间
2016-3-31
最后登录
1970-1-1

勋章墙

2018-5-23 20:21:35 | 显示全部楼层
回复 学习看看
回复

使用道具 举报

如果懒得打字,请选择右侧内容快捷回复 提醒:以任何方式进行『恶意灌水』的行为,进行封号处理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

热点推荐上一条 /5 下一条

QQ|网站地图|手机版|小黑屋|乐易论坛-乐易网 | 湘ICP备19007035号

拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表乐易立场!

娄底市乐易网络科技有限公司声明:乐易原创培训课程版权均为我公司所有,未经许可,不得擅自翻录,盗版,破解本站课课程,我们将保留法律诉讼的权利

GMT+8, 2024-5-20 04:51 , Processed in 0.047516 second(s), 33 queries .

Powered by Discuz! X3.4

Copyright © Tencent Cloud.

快速回复 返回顶部 返回列表