鱼刺类_多线程应用v5.4.3 例程+模块

 

 

*修正 修正_线程池Ex/线程池Ex一处很难被触发的BUG
*修改 去除所有用到取启动时间的函数/方法 (修正在系统开机超过29天的机器上可能会出现问题)
*修正 类回调_生成 部分系统配置兼容问题

https://www.lanzous.com/i2pnrif

 

转载于:https://www.cnblogs.com/xiazai/p/10323217.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
鱼刺_多线程应用 - 更新日志 5.4.3(2017-12-01) *修正 修正鱼刺_线程池Ex/线程池Ex一处很难被触发的BUG *修改 去除所有用到取启动时间的函数/方法 (修正在系统开机超过29天的机器上可能会出现问题) *修正 回调_生成 部分系统配置兼容问题 5.4.2(2017-11-21) *增加 _取启动时间 可解决E自带函数遇到开机超过28天后返回负数问题 5.4.1(2017-10-20) *哇 这是哪 我是谁 我在写什么? 好像改了好多 但是因为爱偷懒睡觉 给忘了 5.4.0(2017-06-25) *替换了回调方式,回调速度提升一倍 *部分代码重新启用了汇编化调用来提升效率 *优化和规范了整体代码,便于阅读理解 *简单封装了内存文件映射(作为私人模块,我基本是用到了什么才会往里封装什么) 5.3.1(2016-11-25) *修正了队列的一处BUG 5.3.0(2016-11-13) *修正了参数 实现了线程、线程池创建时可以调整初始栈大小来突破单进程1500线程数限制 *部分控件移除了汇编加减法的调用(效率存在问题) 5.2.0(2016-8-20) *封装了一些和线程应用息息相关的函数 -------------------------------------------------------------------- 作为易语言 目前公认的最好用的线程模块 我个人是比较开心的 但还是有很多刚接触线程的小伙伴们或者已入坑很久的小伙伴们 对于线程还是表示一知半解 这些小伙伴们的表现为:对于代码基本靠套用 对于自己写出来的程序 基本就像玩具车 遥控车 对于这些小伙伴们 我在这里表示歉意 因为在两年前我答应他们会抽时间做一套比较容易理解的线程相关的教程 哎呀 主要是拖延症晚期患者 真的很烦啊 也不全是拖延问题 因为个人表达水平有限 真心不会按照大纲那样笼统的去讲解 文采坑的要命 (也就调戏妹子思路广点) 所以 我需要你们的帮助 我希望你们能把平时开发过程中遇到的线程方面的问题 都提出来 通过回帖 QQ 邮件 告诉我 然后我这边找个小伙伴来整理 最后定期使用语音会议方式来讲解这些问题 (我用语音聊天教授方式还是很强的让我自言自语自述做教程 真心头大 ) -------------------------------------------------------------------- 作者:Bints(鱼刺) QQ:521573 欢迎加入QQ交.流.群:87555687
鱼刺_多线程应用 - 更新日志 5.4.3(2017-12-01) *修正 修正鱼刺_线程池Ex/线程池Ex一处很难被触发的BUG *修改 去除所有用到取启动时间的函数/方法 (修正在系统开机超过29天的机器上可能会出现问题) *修正 回调_生成 部分系统配置兼容问题 5.4.2(2017-11-21) *增加 _取启动时间 可解决E自带函数遇到开机超过28天后返回负数问题 5.4.1(2017-10-20) *哇 这是哪 我是谁 我在写什么? 好像改了好多 但是因为爱偷懒睡觉 给忘了 5.4.0(2017-06-25) *替换了回调方式,回调速度提升一倍 *部分代码重新启用了汇编化调用来提升效率 *优化和规范了整体代码,便于阅读理解 *简单封装了内存文件映射(作为私人模块,我基本是用到了什么才会往里封装什么) 5.3.1(2016-11-25) *修正了队列的一处BUG 5.3.0(2016-11-13) *修正了参数 实现了线程、线程池创建时可以调整初始栈大小来突破单进程1500线程数限制 *部分控件移除了汇编加减法的调用(效率存在问题) 5.2.0(2016-8-20) *封装了一些和线程应用息息相关的函数 -------------------------------------------------------------------- 作为易语言目前公认的最好用的线程模块 我个人是比较开心的 但还是有很多刚接触线程的小伙伴们或者已入坑很久的小伙伴们 对于线程还是表示一知半解 这些小伙伴们的表现为:对于代码基本靠套用 对于自己写出来的程序 基本就像玩具车 遥控车 对于这些小伙伴们 我在这里表示歉意 因为在两年前我答应他们会抽时间做一套比较容易理解的线程相关的教程 哎呀 主要是拖延症晚期患者 真的很烦啊 也不全是拖延问题 因为个人表达水平有限 真心不会按照大纲那样笼统的去讲解 文采坑的要命 (也就调戏妹子思路广点) 所以 我需要你们的帮助 我希望你们能把平时开发过程中遇到的线程方面的问题 都提出来 通过回帖 QQ 邮件 告诉我 然后我这边找个小伙伴来整理 最后定期使用语音会议方式来讲解这些问题 (我用语音聊天教授方式还是很强的  让我自言自语自述做教程 真心头大 ) 鱼刺
这只是最简单的使用,后续如果热度高的话,再录个视频教程详解吧,学到的好评给一个~ 前  言 · 之前刚接触鱼刺的时候发了个 【鱼刺线程池,自动换IP,队列重试框架(https://bbs.125.la/forum.php?mod=viewthreadtid=14178530 )】 发现热度还不错,大家还是挺喜欢多线程的操作。 常言道:授人以鱼不如授人以渔,鱼刺模块一直感觉确实稳定好用,对于新手来说一些命令还是比较难理解的。但不知道为什么一直没有详细教程。 今天趁这次开源大赛曾个热度 讲一下鱼刺多线程应用线程池Ex的使用方法,废话不多说,直接开始吧。 注: 所讲内容都是自己使用中所得出来的经验,如果讲的不好或者不对得地方请大佬指导哈。 已经请示过作者了: @Bints 首先我们需要下载并载入 教程以 鱼刺_多线程应用5.43为主:鱼刺_多线程应用v5.4.zip (112.11 KB, 下载次数: 228) 我们先来看看“鱼刺_线程池Ex”的命令: 几个参数先说一下: 1.初始栈大小 :可以理解为申请内存的空间的初始大小(个人是这么理解的)。必须是4KB的倍数且最小8KB(8192字节)所以最小为8*1024,不用担心太少,任何情况下Windows会根据需要动态延长堆栈的大小 2.是否在UI线程 :如果填写了真,那么在循环里面会加个"处理事件()"的命令来让消息循环 去队列处理窗口组件操作 防止执行的时候窗口卡死,(记得在哪里看到过线程中处理事件()是没有效果的。不太懂~~) 1. 置_初始栈大小()  设置初始栈的大小,也可以在创建()的第五个参数中设置。此命令可以在线程池工作中设置。 2. 置_空闲回收事件()  设置线程空闲回收的时间,也可以在创建()的第三个参数中设置,此命令可以在线程池工作中设置。 3. 置_最大线程数()  设置最大线程数量,也可以在创建()的第二个参数中设置,此命令可以在线程池工作中设置。 4. 创建() :顾名思义 创建线程池。 5. 投递任务() ,向线程池中投递一个可执行的函数子程序指针,和投递任务_int()基本一模一样,在内部自动转换成指针地址到整数(子程序指针) 6. 投递任务_int()  向线程池中投递一个可执行的函数指针地址 7. 等待任务动态()  :就是等待线程,到指定的等待时间才会往下执行,可以用 触发任务动态来取消等待。 8. 触发任务动态() .这个需要和等待任务动态一起用,也可以理解为 放弃等待中的任务 继续向下执行 9. 暂停()  暂停正在工作的线程,配合 事件_暂停() 使用效果最佳,后续会详解。 10. 事件_暂停()   需要配合暂停命令。如果系统发出了暂停命令返回假 如果正常工作返回真,如果正在销毁的话也会返回假。 11. 继续()  取消暂停。 12. 取_队列任务数()  获取队列中的正在执行的线程数量。 13. 取_空闲任务数()  获取队列中的空闲线程数量,严格控制线程数量可以用到此命令,后续会详解。 14. 取_是否空闲()  获取线程池状态是否彻底空闲,也就是说任务是否全部执行完毕,可以作为后续投递任务完任务后的判断。 15. 取_线程池容量()  获取线程池的可执行的最小线程数量 16. 取_最大线程容量()  获取线程池中可执行的最大线程数量 17. 取_执行线程数()  获取正在工作的线程数量 18. 取_状态()  获取线程正在工作的状态,返回值为常量中的: #线程池_未启动 #线程池_正在工作,#线程池_正在销毁,#线程池_正在创建 下面开始实战,将会用到所有线程池Ex中的命令 首先载入模块后在程序集变量中创建一个线程池Ex。 创建一个按钮。在按钮事件中写入:要执行的任务数量为1000 线程数量为50 如果已知 执行数量为1000了 直接计次循环 写下去可能执行不够准确,因为不排除会投递失败的情况。所以我们: 如下图:只有在投递任务成功的时候 计次才会递增。 但是每次循环都会判断 递增的计次是否小于任务数量, 如果小于就继续执行,如果大于就说明投递的任务数量已经达到了目标任务数,就可以跳出循环了 上图中:投递任务()命令 传递了两个参数 一个是局_计次 一个是 0, 投递 局_计次 可以在任务函数中获取到 用处也比较大,比如可以用作超级列表框的索引。(前提是已经插入了) 等待任务动态().为什么要等待呢,又是时候你投递的是内存指针,投递进去后等待 任务函数将它获取到并释放完毕后触发任务动态就好了 比如: 这样看着没什么问题 是吧~~ 内存方面的知识后续再说把 先掠过,只是这样演示这节只讲线程池Ex 但是如果我们模拟一下真是线程场景 加个延时() 如上图所示,如果有延时的话线程池投递完任务直接销毁 会导致任务被中断,或者放弃了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值