FBrowserCEF3Lib浏览器开发技术交流网址

 找回密码
 立即注册
查看: 9715|回复: 15

【其他原创模块】F点高效线程池模块分享及使用说明

 火.. [复制链接]

签到天数: 467 天

[LV.9]以坛为家II

79

主题

416

回帖

79万

积分

管理员

皇冠皇冠皇冠皇冠太阳太阳

积分
798316

优秀会员永久VIP会员活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老荣耀会员精华大师大富翁

发表于 2025-2-7 14:48:07 | 显示全部楼层 |阅读模式
易源码分享
开发平台: 易语言
使用框架: 其他
代码类型: 模块
界面截图:

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
一、前言
       F点高效线程池模块,英文名:FThreadPool;是本人采用C++开发自用的模块,通过易模块转换后可供易语言直接调用的线程模块,包括普通线程、线程池以及定时器等常规线程操作,为解决易自带线程参数无法多参多类型传递、且传递不安全等问题;
       本模块中内置采用了包含智能指针、参数列表、高速队列、原子锁等开发技术,以及内置独特的参数保护模式,即使参数错误使用乱传递指针也不会导致崩溃,保证线程池高效且安全;
       本模块原为本人自用且只在VIP群里发过,现分享出来,使用完全免费无任何限制;

二、模块文件说明
  • FThreadPool.dll:C++开发功能核心dll文件,使用需放到源码和发布程序核心目录,无此文件功能无法使用
  • FThreadPool.e:易模块源码文件
  • F点高效线程池.ec:易模块文件
  • test.e:易测试示例源码

三、部分功能示例及注意事项
  • 线程创建
.版本 2

.局部变量 参数1, 类_F点线程参数

参数1.创建 ()
参数1.加入文本 (“这是个线程”)
参数1.加入文本 (“a”)
参数1.加入双精度小数 (1.235)
参数1.加入整数 (100)
参数1.加入逻辑值 (真)
F点线程_启动 (&参考_独立线程执行函数, 参数1)

说明:
  • 这里参数可直接为空;如要传递参数,通过`参数1.创建 ()`方法创建后在参数类中加入数据,可多次加入相同类型的数据,个数不限,取数据的时候按照顺序从0开始取如没有数据将返回空,即使取出数据超出范围程序也不会异常,也可取出对应类型参数的个数,通过个数判断获取
  • 创建成功后会返回一个线程句柄,该句柄为内置非易语言线程句柄不要混用,通过该句柄可以获取线程执行的状态,或通过`F点线程_等待 (线程句柄)`等待当前线程执行完成;
注意:
  • 为了参数安全、参数通过`F点线程_启动`功能传递后就会自动失效,当前无法再次使用,如要再次使用传递给其他线程需要重新创建,这里也不需要手动取释放该参数;但是如果该参数未使用未传递则需要手动释放该参数;

  • 线程池创建
.版本 2

线程池.初始化 (111, 10)
线程池.开始运行 ()
.计次循环首 (100, i)
    ' 创建的参数会在传递使用后自动释放,不用手动销毁
    参数1.创建 ()
    参数1.加入整数 (i)
    参数1.加入逻辑值 (真)
    参数1.加入文本 (“这是第” + 到文本 (i) + “个线程的第一个文本参数”)
    参数1.加入双精度小数 (i + 0.11)
    线程池.执行线程 (&参考_线程执行函数, 参数1)
.计次循环尾 ()

说明:
  • 线程池使用之前需初始化,初始化传递两个参数,第一个为标识,第二个为线程数,线程数可创建后动态添加;
  • 线程池初始完成后可在适当位置开始运行,然后通过`执行线程`方法投递执行函数,参数的传递和创建线程一样,如上方代码循环投递100个执行函数,执行函数投递后会按队列空闲线程自动分配执行;
  • 线程池在不使用的情况下,可`停止运行`,停止运行后,如要再次开始需要重新开始,为避免出问题,因此建议不要中途停止,可在程序结束的时候停止整个线程池;

  • 定时器创建
.版本 2

参数1.创建 ()
参数1.加入文本 (“这是个定时执行的函数”)
定时器.置执行函数 (&参考_周期函数, 参数1)
定时器.开始运行 (1000, 10)


说明:
  • 如上定时器需要先设置实现函数后在开始运行,在开始运行中设置执行的周期和精度,精度值越小精度越高,但资源消耗越大;
  • 定时器执行函数存在几十毫秒的误差,请注意判断;
  • 定时器执行非柱塞执行,到周期时间后为异步队列执行,如果上一次执行函数存在柱塞未执行完成会等待上一次执行完成后才会执行下一次,所以定时器中不建议使用高延迟阻塞的代码;

  • 执行函数模板

.版本 2

.子程序 参考_独立线程执行函数
.参数 参数指针, 整数型, , 该参数指针只在当前有效,通过“类_F点线程参数”绑定后可取出对应的参数值
.局部变量 参数, 类_F点线程参数

参数.绑定 (参数指针)
' 延迟模拟一下这里处理了东西’
输出调试文本 (到文本 (参数.取整数 ()) + “|” + 参数.取文本 (0) + “|” + 到文本 (参数.取双精度小数 ()))

说明:
  • 线程、线程池、定时器采用的执行函数都为该模板函数,注意不要写到类方法中,该函数只有一个参数,参数就为传递的`类_F点线程参数`类的指针,通过绑定后,即可取出传递的参数;
  • 执行函数中可直接操作窗口控件,但不建议在执行函数中创建和销毁控件;
  • 线程执行除了定时器或线程池只有一个线程时为有序外,其他都无序执行,如要有序执行需自行加锁控制处理;

四、模块下载(回复后可见)
模块源码以及示例代码
游客,如果您要查看本帖隐藏内容请回复


五、后期预计扩展
线程池的线程动态减少、状态信息等……………………当然有什么想法你也可以在本帖中回复;





评分

参与人数 1金钱 +10 贡献 +10 收起 理由
mosheng + 10 + 10 很给力!

查看全部评分

签到天数: 1 天

[LV.1]初来乍到

0

主题

2

回帖

50

积分

初级会员LV1

月亮月亮

积分
50
发表于 2026-7-24 06:19:35 | 显示全部楼层
这是EVO嘛这是EVO嘛这是EVO嘛这是EVO嘛这是EVO嘛这是EVO嘛

签到天数: 3 天

[LV.2]偶尔看看I

0

主题

11

回帖

62

积分

初级会员LV1

月亮月亮

积分
62
发表于 2026-5-30 09:35:27 | 显示全部楼层
感谢分享,来学习一下技术!

签到天数: 16 天

[LV.4]偶尔看看III

0

主题

30

回帖

291

积分

初级会员LV5

太阳月亮星星星星

积分
291
发表于 2026-1-2 12:10:25 | 显示全部楼层
学习学习学习学习学习学习学习学习学习

签到天数: 55 天

[LV.5]常住居民I

1

主题

94

回帖

2115

积分

高级会员LV1

皇冠月亮星星

积分
2115
发表于 2025-10-7 22:12:03 | 显示全部楼层
F点高效线程池模块分享及使用说明

签到天数: 6 天

[LV.2]偶尔看看I

0

主题

14

回帖

235

积分

初级会员LV4

太阳月亮

积分
235
发表于 2025-8-18 13:30:11 | 显示全部楼层
学习学习学习学习学习学习学习学习学习学习

签到天数: 10 天

[LV.3]偶尔看看II

0

主题

26

回帖

306

积分

中级会员LV1

太阳月亮月亮星星

积分
306
QQ
发表于 2025-5-24 00:07:47 | 显示全部楼层
支持开源!感谢分享,论坛有你更精彩~

签到天数: 55 天

[LV.5]常住居民I

1

主题

94

回帖

2115

积分

高级会员LV1

皇冠月亮星星

积分
2115
发表于 2025-4-25 08:36:19 | 显示全部楼层
线程池的线程动态减少、状态信息等

签到天数: 7 天

[LV.3]偶尔看看II

0

主题

10

回帖

176

积分

初级会员LV3

太阳星星

积分
176
发表于 2025-3-6 04:35:20 | 显示全部楼层
6666666666666666

签到天数: 1 天

[LV.1]初来乍到

0

主题

2

回帖

27

积分

新手上路LV1

星星

积分
27
发表于 2025-3-2 09:31:56 | 显示全部楼层
感谢分享!感谢分享!感谢分享!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们 在线手册 视频教程 赞助支持 CEF官网 易语言官网 火山开发官网
拒绝任何人以任何形式在本网站发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表本网站立场!

网址帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!

Archiver| 手机版| 小黑屋| 联系QQ:283987887 劰载中...

Powered by Discuz! X5.0 GMT+8, 2026-9-17 06:22 , Processed in 0.033785 second(s), 19 queries , Redis On.

 川公网安备51090302000262 蜀ICP备2023034329号
快速回复 返回顶部 返回列表