开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 12020|回复: 68
收起左侧

[易语言成品模块] E-APPLE线程池模块V2.2 发布(20130407)

[复制链接]
发表于 2012-12-7 00:16:44 | 显示全部楼层 |阅读模式   四川省成都市
分享例程
界面截图:
备注说明: -
本帖最后由 guoqp 于 2013-4-7 17:00 编辑

E-APPLE线程池 2.2 使用说明

使用本线程池前请先建立一个变量,并将其类型设为“E_APPLE线程池”,下述说明将假设本线程池变量为E。
一、线程池的创建与销毁
1、创建
  E.创建(10,0)
  说明:本方法两个参数
  参数一:线程池容量,也就是本线程池最大允许加入多少个线程
  参数二:超时时间,允许为空,默认为0,表示不设置超时时间。单位:秒。不过请注意,如果不配置超时时间,而你的线程处理不当导致一直驻留线程池,这样可能会导致线程池中一直被使用而无法加入新的线程。至
于这个超时时间建议根据线程实际运行时间的最大值来设定。
2、销毁
  E.清空(真)
  说明:本方法有一个参数,默认为假,若本参数为真则强制结束池内所有进程并销毁本线程池。若本参数为假会一直等待所有进程运行结束后再销毁本线程池,注意,这时会无限等待,直到所有线程结束,如果你的线
程不能正常结束可能会导致死锁哦。
二、加入线程
E.添加任务(&子程序,子程序参数指针,&获取自身索引子程序指针)
说明:三个参数
参数一:线程函数指针
参数二:线程函数参数指针。使用“取指针地址(变量)”获取,这个指针地址也就是欲传递给线程的参数,一般为自定义类型。
参数三:本子程序指针用于将线程索引号传给自定义变量
任务创建成功会返回索引号
下边举例说明如何向线程传入参数:
1、自定义一个类型,成员多少就看你想传入多少个参数了
2、定义一个变量,类型为步骤1的这个自定义类型
3、获取这个变量地址:取指针地址(变量),这个就是参数二需要的。
下边说说在线程内如何将这个参数还原以供自己使用。
1、定义一个变量,类型为刚刚我们建的那个自定义类型(假设线程参数名为参数指针,定义的这个变量为线程参数)
2、API_变量内存拷贝 (取指针地址 (线程参数), 参数指针, API_取变量尺寸 (参数指针))
3、现在变量线程参数就已经是可以直接使用的了。
三、看看线程池中情况
E.任务统计(0,返回结果数组)
说明:两个参数
参数一:欲统计的任务状态。默认为0,值:0包括运行中与挂起两种状态,1为运行状态,2为挂起状态
参数二:一个数组,用于返回所有结果对应的索引号,这样就方便对这些线程进行各种操作了。

四、看看线程池用完了没有
E.分配任务索引()
说明:如果没有找到空闲的,则返回0,否则返回第一个空闲的索引
五、我想看看某个任务线程是否已经结束
E.等待任务(任务索引,等待时间,是否清除)
说明:三个参数
参数一:欲操作的任务索引号
参数二:等待时间,单位:毫秒,如果在这段时间内线程运行结束则返回真,否则返回假。
参数三:是否清除,如果为真,超过等待时间未结束的线程会强制结束掉并释放其占用的线程池。
六、我想禁止或允许线程池加入新的线程
E.启动()
E.停止()
七、我想让某个线程独占内存
E.锁定()
说明:准备锁定前用
E.解锁()
说明:准备解锁时用
八、我想挂起或者恢复某个任务线程
E.暂停任务(索引号)
E.恢复任务(索引号)
说明:参数“索引号”为线程池中对应的索引号
九、我想重新定义一下线程池容量
E.重置线程池容量(10)
说明:参数为新的容量,注意配置的新容量不能低于线程池中正在运行及挂起的线程总数,否则重置会失败。
其实细心的朋友可能已经发现这里边有个问题,就是在线程内部怎么知道自己处在哪个索引呢,按照下边的方法就可以了
1、定义一个子程序,两个参数,均为整数。
  说明:
  参数一为传入线程参数变量地址(本处假设为“参数指针”),这个地址就是我们传给线程时用的那个参数地址。
  参数二为索引号(本处假设为“索引号”),这个参数是在线程池内部传出来的。
2、在子程序内部定义一个变量,类型为你自定义的类型,这里一定要注意一点,你的自定义变量时一定要有一项用于存储线程索引,因为在这里我们会向这个成员写入索引号。
3、再加入如下代码,注意变量名称你稍作调整就行了。
  API_变量内存拷贝 (取指针地址 (线程参数), 参数指针, API_取变量尺寸 (参数指针))   '将原参数传到内部进行处理
  线程参数.线程索引 = 索引号       '
  API_变量内存拷贝 (参数指针, 取指针地址 (线程参数), API_取变量尺寸 (参数指针)) '将我们处理好的变量传回去,这样我们的线程就可以使用了。
接下来最关键的来了,创建进程时加入第三个参数,就是这个处理子程序指针了。

下边贴上完整的代码:
.版本 2
.支持库 shellEx
.支持库 spec
.子程序 _临时子程序
.局部变量 线程参数, 线程参数测试
.局部变量 任务索引, 整数型
.局部变量 计次, 整数型
.局部变量 参数地址, 整数型
线程参数.文本 = “abc”
线程参数.整数 = 22
参数地址 = 取指针地址 (线程参数)
线程池.创建 (500, 10)
.计次循环首 (10000, 计次)
    线程池.添加任务 (&线程子程序, 参数地址, &获取自身索引子程序指针)
    .如果真 (计次 > 500)
        线程池.清空 (真)
        跳出循环 ()
    .如果真结束
.计次循环尾 ()
线程池.清空 ()

.子程序 线程子程序
.参数 参数指针, 整数型
.局部变量 i, 整数型
.局部变量 线程参数, 线程参数测试
API_变量内存拷贝 (取指针地址 (线程参数), 参数指针, API_取变量尺寸 (参数指针))
调试输出 (线程参数.线程索引, 线程参数.整数)
延时 (100000)
.子程序 获取自身索引子程序指针
.参数 参数指针, 整数型
.参数 索引号, 整数型
.局部变量 线程参数, 线程参数测试
API_变量内存拷贝 (取指针地址 (线程参数), 参数指针, API_取变量尺寸 (参数指针))
线程参数.线程索引 = 索引号
API_变量内存拷贝 (参数指针, 取指针地址 (线程参数), API_取变量尺寸 (参数指针))

E-APPLE线程池2.0.zip

4.23 KB, 下载次数: 217, 下载积分: 精币 -2 枚

E-APPLE线程池2.2.zip

4.75 KB, 下载次数: 517, 下载积分: 精币 -2 枚


友情提醒:请选择可信度高的模块,勿用未知模块,防止小人在模块内加入木马程序。【发现问题模块请到站务投诉】。
结帖率:0% (0/1)

签到天数: 3 天

发表于 2023-8-27 00:36:23 | 显示全部楼层   广西壮族自治区玉林市
我用这个模块怎么才能运行40多个线程
回复 支持 反对

使用道具 举报

结帖率:43% (3/7)

签到天数: 14 天

发表于 2022-6-9 23:41:20 | 显示全部楼层   广东省湛江市
谢谢分享。。。。。。。。

回复 支持 反对

使用道具 举报

结帖率:43% (3/7)

签到天数: 14 天

发表于 2020-11-4 00:28:54 | 显示全部楼层   广东省广州市
喜欢 找到了
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)
发表于 2018-4-9 08:38:37 | 显示全部楼层   江苏省连云港市
喜欢 找到了
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)
发表于 2017-5-28 01:32:42 | 显示全部楼层   广东省汕头市
很好,正需要哦
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)
发表于 2017-5-28 01:31:58 | 显示全部楼层   广东省汕头市
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)
发表于 2017-5-28 01:31:44 | 显示全部楼层   广东省汕头市
回复 支持 反对

使用道具 举报

发表于 2016-6-23 18:17:30 | 显示全部楼层   浙江省台州市
谢谢分享。。。。。。。。
回复 支持 反对

使用道具 举报

发表于 2016-4-9 18:24:10 | 显示全部楼层   湖南省常德市
正好测试下  
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)
发表于 2015-12-14 21:52:29 | 显示全部楼层   浙江省湖州市
非常感谢 非常感谢
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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