开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 339|回复: 13
收起左侧

[易语言] 多线程内存一直在增加是泄露?

[复制链接]
结帖率:92% (49/53)
发表于 2025-10-24 14:44:37 | 显示全部楼层 |阅读模式   湖北省荆州市
9精币
投递任务 目前一直在循环 投递   需要一直循环去投递任务   
如何让已经完成的空闲线程继续循环启动?




补充内容 (2025-10-24 14:48):
代码在楼下  怎么一按回车键  就发布了 都不能编辑!!!!!!!!!!!!!!


回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值
结帖率:92% (49/53)

签到天数: 4 天

 楼主| 发表于 2025-10-24 14:48:03 | 显示全部楼层   湖北省荆州市
2个问题   的一个投递任务 多线程内存一直在增加  ,没有去释放。
1.投递任务 目前一直在循环 投递   需要一直循环去投递任务   
2.如何让已经完成的空闲线程继续循环启动?

2025年10月24日14时45分50秒 >> 线程池 空闲等待任务。
2025年10月24日14时45分52秒 >> 线程池等待线程数:0,空闲线程数:0,工作线程数:100
2025年10月24日14时45分52秒 >> 线程池 正在工作中。
2025年10月24日14时45分54秒 >> 线程池等待线程数:0,空闲线程数:0,工作线程数:100



2025年10月24日14时45分24秒 >> 线程池等待线程数:0,空闲线程数:80,工作线程数:20
2025年10月24日14时45分24秒 >> 线程池 正在工作中。
2025年10月24日14时45分26秒 >> 线程池等待线程数:0,空闲线程数:80,工作线程数:20
2025年10月24日14时45分26秒 >> 线程池 正在工作中。
2025年10月24日14时45分28秒 >> 线程池等待线程数:0,空闲线程数:80,工作线程数:20
2025年10月24日14时45分28秒 >> 线程池 正在工作中。



空闲线程数:80  一直在等待中,如果 还没返回 就浪费资源了。


线程池主程序 - 副本.e (14.02 KB, 下载次数: 1)

点评

你得看看是内存溢出 还是 栈溢出 启动线程之前申请的空间线程结束没有释放就是内存溢出 启动的线程数量太多 爆栈了就是栈溢出   贵州省毕节市  发表于 2025-10-24 18:24
回复

使用道具 举报

结帖率:100% (2/2)

签到天数: 8 天

发表于 2025-10-24 14:48:28 | 显示全部楼层   四川省成都市
请参考这个demo里,实际执行线程的循环方式。
多线程demo.e (919.39 KB, 下载次数: 18)

点评

你还真是快,哈哈,我才发源码在2楼 帮忙看看我的   湖北省荆州市  发表于 2025-10-24 14:49
回复

使用道具 举报

结帖率:100% (2/2)

签到天数: 8 天

发表于 2025-10-24 14:52:11 | 显示全部楼层   四川省成都市
fengyewl 发表于 2025-10-24 14:48
2个问题   的一个投递任务 多线程内存一直在增加  ,没有去释放。
1.投递任务 目前一直在循环 投递   需要 ...

没法看,版本还是支持库不一致,打开全是问号。
回复

使用道具 举报

结帖率:96% (26/27)

签到天数: 9 天

发表于 2025-10-24 14:53:44 | 显示全部楼层   贵州省遵义市
frankiy 发表于 2025-10-24 14:48
请参考这个demo里,实际执行线程的循环方式。

加了许可证 本质上不还是单线程吗不得被阻塞排队执行
回复

使用道具 举报

结帖率:92% (49/53)

签到天数: 4 天

 楼主| 发表于 2025-10-24 14:55:27 | 显示全部楼层   湖北省荆州市
frankiy 发表于 2025-10-24 14:52
没法看,版本还是支持库不一致,打开全是问号。

https://bbs.ijingyi.com/thread-14865907-1-2.html   就是用他的测试的   常用功能支持库V3.00智能指针版 1.rar (279.58 KB, 下载次数: 0)
回复

使用道具 举报

结帖率:100% (2/2)

签到天数: 8 天

发表于 2025-10-24 14:56:33 | 显示全部楼层   四川省成都市
qcby 发表于 2025-10-24 14:53
加了许可证 本质上不还是单线程吗不得被阻塞排队执行

请教如何写多线程不需要用到许可证。请你给个例子。

点评

把相关的变量转成 局部变量或者全局自定义数组变量 如果非得调用子程序那从线程中再调用子程序来传参获取 我写多线程没用到许可证 !   广西壮族自治区梧州市  发表于 2025-10-24 16:20
回复

使用道具 举报

结帖率:92% (49/53)

签到天数: 4 天

 楼主| 发表于 2025-10-24 14:57:16 | 显示全部楼层   湖北省荆州市
  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
变量名类 型数组备 注
线程池常用_线程池  
log类log  

子程序名返回值类型公开备 注
__启动窗口_创建完毕  
变量名类 型静态数组备 注
hwnd整数型 
hwnd = 标签_反馈.取窗口句柄 ()
log类.初始化 (hwnd)
子程序名返回值类型公开备 注
_标签_反馈_反馈事件整数型 
参数名类 型参考可空数组备 注
a整数型
b整数型
变量名类 型静态数组备 注
str文本型 
res整数型 
判断 (a = 1)
常用_无限传参还原 (b, str)
编辑框_日志.加入文本 (str)
判断 (a = 2)
常用_无限传参还原 (b, str, res)
str = 取文本 (“%s >> %s[%d]”, 时间到文本 (取现行时间 (), 1), str, res)#换行符
编辑框_日志.加入文本 (str)



子程序名返回值类型公开备 注
_按钮创建_被单击  
变量名类 型静态数组备 注
mix整数型 
max整数型 
re逻辑型 
mix = 到整数 (编辑框mix2.内容)
max = 到整数 (编辑框max2.内容)
调试输出 (mix, max)
re = 线程池.创建 (&任务_多文本参, &回调函数, mix, max)
log类.printf (“线程池创建结果:”到文本 (re))
时钟1.时钟周期 = 2000
子程序名返回值类型公开备 注
任务_多文本参整数型 
参数名类 型参考可空数组备 注
a文本型
b文本型
c文本型
d文本型
i文本型
变量名类 型静态数组备 注
str文本型 
res整数型 
prt整数型 
常用_完美延时 (1000)
str = 取文本 (“任务_多文本参回调结果[%d][%d][%d][%d],”, a, b, c, d)
res = 到整数 (i)
prt = 常用_无限传参 (str, res)
常用_完美延时 (取随机数 (5000, 33000))
' 延迟 (取随机数 (5000, 33000))  ' 模拟工作耗时
返回 (prt)
子程序名返回值类型公开备 注
回调函数  
参数名类 型参考可空数组备 注
参数一整数型
log类.printf_int (参数一)
子程序名返回值类型公开备 注
_按钮投递任务_被单击  
变量名类 型静态数组备 注
a文本型 
b文本型 
c文本型 
d文本型 
re逻辑型 
i整数型 
调试输出 (“开始循环任务”)
a = “我是文本a”
b = “我是文本b”
c = “我是文本c”
d = “我是文本d”  ' .....可以无限多个
计次循环首 (100, i)
re = 线程池.投任务多文本参 (a, b, c, d, 到文本 (i))
如果真 (re = )
log类.printf (“请先创建线程池”)
跳出循环 ()

计次循环尾 ()
子程序名返回值类型公开备 注
_按钮线程池暂停_被单击  
线程池.暂停 ()
子程序名返回值类型公开备 注
_按钮线程池恢复_被单击  
线程池.恢复 ()
子程序名返回值类型公开备 注
_按钮线程池清空任务_被单击  
线程池.清空任务 ()
子程序名返回值类型公开备 注
_按钮销毁_被单击  
变量名类 型静态数组备 注
re逻辑型 
re = 线程池.销毁 ()  ' (清空任务池,销毁,成功返回 真)
log类.printf (取文本 (“线程池销毁[%s]”, 到文本 (re)))
' 线程池3.销毁 (0, 10000)  ' 。0=正常销毁(清空任务池,等待当前任务执行后返回 真),最长等待10000,返回真,销毁成功,返回假,该线程池为销毁状态。等待线程工作完成可再次调用销毁。
' 线程池3.销毁 (1, )' 1=强制销毁(强制销毁线程池。立即返回   注意:此方式执行后强制销毁线程池,强烈不建议使用,会造成内存泄露。)。
子程序名返回值类型公开备 注
_按钮线程池取状态_被单击  
变量名类 型静态数组备 注
re整数型 
say文本型 
re = 线程池.取状态 ()
判断 (re = 0)
say = “线程池 未创建或已销毁。”
判断 (re = 1)
say = “线程池 正在工作中。”
判断 (re = 2)
say = “线程池 空闲等待任务。”
判断 (re = 3)
say = “线程池 繁忙有任务正在排队。”
判断 (re = 4)
say = “线程池 正在销毁。”


log类.printf (say)
子程序名返回值类型公开备 注
_按钮刷新取线程数_被单击  
变量名类 型静态数组备 注
str文本型 
等待线程数整数型 
空闲线程数整数型 
工作线程数整数型 
等待线程数 = 线程池.取等待任务数 ()
空闲线程数 = 线程池.取空闲线程数 ()
工作线程数 = 线程池.取工作线程数 ()
str = “线程池等待线程数:”到文本 (等待线程数)
str = str + “,”“空闲线程数:”到文本 (空闲线程数)
str = str + “,”“工作线程数:”到文本 (工作线程数)
log类.printf (str)
子程序名返回值类型公开备 注
_时钟1_周期事件  
变量名类 型静态数组备 注
re整数型 
say文本型 
re = 线程池.取状态 ()
判断 (re = 0)
say = “线程池 未创建或已销毁。”
判断 (re = 1)
say = “线程池 正在工作中。”
_按钮刷新取线程数_被单击 ()
判断 (re = 2)
say = “线程池 空闲等待任务。”
_按钮投递任务_被单击 ()
判断 (re = 3)
say = “线程池 繁忙有任务正在排队。”
判断 (re = 4)
say = “线程池 正在销毁。”


log类.printf (say)



i支持库列表   支持库注释   
CommonSupport(未知支持库)
spec特殊功能支持库

回复

使用道具 举报

结帖率:92% (49/53)

签到天数: 4 天

 楼主| 发表于 2025-10-24 14:57:45 | 显示全部楼层   湖北省荆州市
  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
变量名类 型数组备 注
线程池常用_线程池  
log类log  

子程序名返回值类型公开备 注
__启动窗口_创建完毕  
变量名类 型静态数组备 注
hwnd整数型 
hwnd = 标签_反馈.取窗口句柄 ()
log类.初始化 (hwnd)
子程序名返回值类型公开备 注
_标签_反馈_反馈事件整数型 
参数名类 型参考可空数组备 注
a整数型
b整数型
变量名类 型静态数组备 注
str文本型 
res整数型 
判断 (a = 1)
常用_无限传参还原 (b, str)
编辑框_日志.加入文本 (str)
判断 (a = 2)
常用_无限传参还原 (b, str, res)
str = 取文本 (“%s >> %s[%d]”, 时间到文本 (取现行时间 (), 1), str, res)#换行符
编辑框_日志.加入文本 (str)



子程序名返回值类型公开备 注
_按钮创建_被单击  
变量名类 型静态数组备 注
mix整数型 
max整数型 
re逻辑型 
mix = 到整数 (编辑框mix2.内容)
max = 到整数 (编辑框max2.内容)
调试输出 (mix, max)
re = 线程池.创建 (&任务_多文本参, &回调函数, mix, max)
log类.printf (“线程池创建结果:”到文本 (re))
时钟1.时钟周期 = 2000
子程序名返回值类型公开备 注
任务_多文本参整数型 
参数名类 型参考可空数组备 注
a文本型
b文本型
c文本型
d文本型
i文本型
变量名类 型静态数组备 注
str文本型 
res整数型 
prt整数型 
常用_完美延时 (1000)
str = 取文本 (“任务_多文本参回调结果[%d][%d][%d][%d],”, a, b, c, d)
res = 到整数 (i)
prt = 常用_无限传参 (str, res)
常用_完美延时 (取随机数 (5000, 33000))
' 延迟 (取随机数 (5000, 33000))  ' 模拟工作耗时
返回 (prt)
子程序名返回值类型公开备 注
回调函数  
参数名类 型参考可空数组备 注
参数一整数型
log类.printf_int (参数一)
子程序名返回值类型公开备 注
_按钮投递任务_被单击  
变量名类 型静态数组备 注
a文本型 
b文本型 
c文本型 
d文本型 
re逻辑型 
i整数型 
调试输出 (“开始循环任务”)
a = “我是文本a”
b = “我是文本b”
c = “我是文本c”
d = “我是文本d”  ' .....可以无限多个
计次循环首 (100, i)
re = 线程池.投任务多文本参 (a, b, c, d, 到文本 (i))
如果真 (re = )
log类.printf (“请先创建线程池”)
跳出循环 ()

计次循环尾 ()
子程序名返回值类型公开备 注
_按钮线程池暂停_被单击  
线程池.暂停 ()
子程序名返回值类型公开备 注
_按钮线程池恢复_被单击  
线程池.恢复 ()
子程序名返回值类型公开备 注
_按钮线程池清空任务_被单击  
线程池.清空任务 ()
子程序名返回值类型公开备 注
_按钮销毁_被单击  
变量名类 型静态数组备 注
re逻辑型 
re = 线程池.销毁 ()  ' (清空任务池,销毁,成功返回 真)
log类.printf (取文本 (“线程池销毁[%s]”, 到文本 (re)))
' 线程池3.销毁 (0, 10000)  ' 。0=正常销毁(清空任务池,等待当前任务执行后返回 真),最长等待10000,返回真,销毁成功,返回假,该线程池为销毁状态。等待线程工作完成可再次调用销毁。
' 线程池3.销毁 (1, )' 1=强制销毁(强制销毁线程池。立即返回   注意:此方式执行后强制销毁线程池,强烈不建议使用,会造成内存泄露。)。
子程序名返回值类型公开备 注
_按钮线程池取状态_被单击  
变量名类 型静态数组备 注
re整数型 
say文本型 
re = 线程池.取状态 ()
判断 (re = 0)
say = “线程池 未创建或已销毁。”
判断 (re = 1)
say = “线程池 正在工作中。”
判断 (re = 2)
say = “线程池 空闲等待任务。”
判断 (re = 3)
say = “线程池 繁忙有任务正在排队。”
判断 (re = 4)
say = “线程池 正在销毁。”


log类.printf (say)
子程序名返回值类型公开备 注
_按钮刷新取线程数_被单击  
变量名类 型静态数组备 注
str文本型 
等待线程数整数型 
空闲线程数整数型 
工作线程数整数型 
等待线程数 = 线程池.取等待任务数 ()
空闲线程数 = 线程池.取空闲线程数 ()
工作线程数 = 线程池.取工作线程数 ()
str = “线程池等待线程数:”到文本 (等待线程数)
str = str + “,”“空闲线程数:”到文本 (空闲线程数)
str = str + “,”“工作线程数:”到文本 (工作线程数)
log类.printf (str)
子程序名返回值类型公开备 注
_时钟1_周期事件  
变量名类 型静态数组备 注
re整数型 
say文本型 
re = 线程池.取状态 ()
判断 (re = 0)
say = “线程池 未创建或已销毁。”
判断 (re = 1)
say = “线程池 正在工作中。”
_按钮刷新取线程数_被单击 ()
判断 (re = 2)
say = “线程池 空闲等待任务。”
_按钮投递任务_被单击 ()
判断 (re = 3)
say = “线程池 繁忙有任务正在排队。”
判断 (re = 4)
say = “线程池 正在销毁。”


log类.printf (say)


i支持库列表   支持库注释   
CommonSupport(未知支持库)
spec特殊功能支持库

回复

使用道具 举报

结帖率:89% (16/18)

签到天数: 9 天

发表于 2025-10-24 15:03:38 | 显示全部楼层   四川省广元市
  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
变量名类 型数组备 注
线程池鱼刺类_线程池  
是否停止逻辑型  

子程序名返回值类型公开备 注
__启动窗口_创建完毕  
启动线程 (&线程控制区, , )
子程序名返回值类型公开备 注
线程控制区  
变量名类 型静态数组备 注
任务数整数型 
投递数整数型 
如果真 (取反 (线程池.创建 (8, , , )))
信息框 (“线程池创建失败”, 0, , )
返回 ()

任务数 = 100
循环判断首 ()
如果真 (任务数 ≤ 投递数)
跳出循环 ()

循环判断首 ()
如果真 (线程池.取_是否有空闲 ())
投递数 = 投递数 + 1
线程池.投递任务 (&执行任务, 投递数, )
跳出循环 ()
延时 (10)
处理事件 ()
循环判断尾 ()
延时 (10)
处理事件 ()
循环判断尾 ()
循环判断首 ()
如果真 (线程池.取_是否完全空闲 ())
跳出循环 ()

循环判断尾 ()
调试输出 (“所有线程运行完毕”)
子程序名返回值类型公开备 注
执行任务  
参数名类 型参考可空数组备 注
参数整数型
调试输出 (参数)


i支持库列表   支持库注释   
EThread多线程支持库
spec特殊功能支持库
投递前先循环判断是否有空闲,有的话再投递
回复

使用道具 举报

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

本版积分规则 致发广告者

关闭

精易论坛 - 有你更精彩上一条 /2 下一条

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

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

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