精易论坛

标题: 线程问题 大佬来看看 [打印本页]

作者: 是可可吖    时间: 2025-1-11 16:36
标题: 线程问题 大佬来看看
  
子程序名返回值类型公开备 注
_按钮_排查_被单击  
变量名类 型静态数组备 注
次数整数型 
判断 (编辑框_线程数.内容 = “”)
对比线程 = 1
对比线程 = 到整数 (编辑框_线程数.内容)

运行线程数 = 0
计次循环首 (超级列表框2.取表项数 (), 次数)
线程_启动 (&查找, 次数 - 1, )
进入许可区 (集_许可证_查找)
运行线程数 = 运行线程数 + 1
退出许可区 (集_许可证_查找)
判断循环首 (运行线程数 ≥ 对比线程)
程序_延时 (500, )
判断循环尾 ()
计次循环尾 ()
判断循环首 (运行线程数 > 0)
程序_延时 (500, )
判断循环尾 ()
子程序名返回值类型公开备 注
查找  
参数名类 型参考可空数组备 注
表项索引整数型
变量名类 型静态数组备 注
位置索引整数型 
位置索引 = 超级列表框1.查找表项 (超级列表框2.取标题 (表项索引, 1), , , )
如果真 (位置索引 ≠ -1)
进入许可区 (集_许可证_查找)
编辑框1.加入文本 (“位置索引:”到文本 (位置索引)#换行符 )
退出许可区 (集_许可证_查找)

进入许可区 (集_许可证_查找)
运行线程数 = 运行线程数 - 1
退出许可区 (集_许可证_查找)


i支持库列表   支持库注释   
iext扩展界面支持库一
EThread多线程支持库


大佬们,来看看,我这线程跑起来就卡死了,是什么原因

是哪里写错了吗?

作者: 是可可吖    时间: 2025-1-11 16:46


@LEOONL

大佬帮忙看看,跑到最后直接卡死了

作者: 风行无忌    时间: 2025-1-11 17:18
其它线程操作界面需要等主线程反馈,而这时候主线程如果进入了锁,其它线程会阻塞住,一直在那等待主线程反馈,此时主线程还在等待进入许可区,就造成了死锁。
你这个 运行线程数 = 运行线程数 + 1 可以改成原子操作来保持同步,应该就正常了。
简单的说,如果其它线程会与主线程交互,就不能在主线程中使用临界许可。
作者: 是可可吖    时间: 2025-1-11 17:22
风行无忌 发表于 2025-1-11 17:18
其它线程操作界面需要等主线程反馈,而这时候主线程如果进入了锁,其它线程会阻塞住,一直在那等待主线程反 ...

谢谢,已自行解决了,日子打印不加许可就行了
作者: 真IKUN    时间: 2025-1-11 17:44
来晚了


作者: 是可可吖    时间: 2025-1-11 22:08
已自行解决,日志打印不加进出许可就不会卡死了




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4