社区
C++ Builder
帖子详情
这样会引起死锁么
richedit
2010-06-08 10:25:27
我在程序开始的时候开启几个线程,在线程的onterminate事件里判断是否所有线程都结束了。
我要在线程都结束之后再开始运行主线程,因为主线程要用到那个几个线程的处理结果。所以就在onterminate事件函数里判断所有线程都结束之后setevent,然后在开启线程之后的主线程里waitfor。因为onterminate的事件是在主线程里,这样会引起死锁么?还有别的方法同步了么?
...全文
117
8
打赏
收藏
这样会引起死锁么
我在程序开始的时候开启几个线程,在线程的onterminate事件里判断是否所有线程都结束了。 我要在线程都结束之后再开始运行主线程,因为主线程要用到那个几个线程的处理结果。所以就在onterminate事件函数里判断所有线程都结束之后setevent,然后在开启线程之后的主线程里waitfor。因为onterminate的事件是在主线程里,这样会引起死锁么?还有别的方法同步了么?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hind24
2010-06-12
打赏
举报
回复
你的主线程如果是界面主线程,等待中是肯定无法响应的,如果是另外的线程就可以避免界面不响应
多个线程都用waitfor同步是肯定要等待的,建议看看帮助里的计数法
Waiting4you
2010-06-12
打赏
举报
回复
[Quote=引用 5 楼 richedit 的回复:]
我改用了waitfor还蛮好的
不过 汗 有个新问题
在主线程waitfor的话 主线程就没反应了,程序界面就死掉的样子,一直等到多线程运行结束。。。。。这个还有办法么?
我这程序写的实在是太挫了
[/Quote]
你说"要在线程都结束之后再开始运行主线程,因为主线程要用到那个几个线程的处理结果".那么,你可以做一个进度条,更新线程的进度;也可以象Office之类的软件一样,运行并显示一个Logo之类的,等线程运行结束再显示主窗口.
如果不喜欢上面的方法,你也可以在那些线程里插入ProcessMessages(),注意同步.
zzbinfo
2010-06-12
打赏
举报
回复
[Quote=引用 5 楼 richedit 的回复:]
我改用了waitfor还蛮好的
不过 汗 有个新问题
在主线程waitfor的话 主线程就没反应了,程序界面就死掉的样子,一直等到多线程运行结束。。。。。这个还有办法么?
我这程序写的实在是太挫了
[/Quote]
没有一个人是一开始就会写程序的,不要气馁,慢慢来。虽然我帮不了你。
richedit
2010-06-11
打赏
举报
回复
我改用了waitfor还蛮好的
不过 汗 有个新问题
在主线程waitfor的话 主线程就没反应了,程序界面就死掉的样子,一直等到多线程运行结束。。。。。这个还有办法么?
我这程序写的实在是太挫了
hind24
2010-06-09
打赏
举报
回复
不是很理解楼主的做法,你说的主线程是程序自动产生的主线程还是自定义的主要工作线程?
我也很想知道怎么干预程序的主线程。
无论是什么样的主线程,完全可以尽早启动,作为主线程最好最早启动。可以不停询问其他线程状态,满足条件则执行相应操作。
关于多线程同步,帮助里面还有种记数法可以用
lirg8405
2010-06-09
打赏
举报
回复
我认为只要onterminate能够得到setevent,那么主线程是应该可以执行的
taozc
2010-06-09
打赏
举报
回复
同意3楼的,主线程WaitFor。。。,
Waiting4you
2010-06-09
打赏
举报
回复
为什么要在onterminate里判断所有线程已结束?线程对象本来就有一个WaitFor方法,直接在主线程WaitFor这些线程不就行了?
Oracle外键不加索引
引起
死锁
示例
主要介绍了Oracle外键不加索引
引起
死锁
的情况及解决,需要的朋友可以参考下
死锁
查询sql语句
oracle数据库
死锁
查询并处理,被锁对象、
引起
死锁
原因等查询及解决方法
JVM性能调优面试必问OOM和CPU100%和
死锁
排查实战原理分析
本节课通过两个方面系统性的给大家分享JVM的生产问题排查实战。 第一章节,介绍OOM异常的原因,分析方法论... 第二章节,介绍CPU100%问题产生的原因,实战CPU100%,分析堆栈,以及
死锁
的问题,定位问题,解决问题等等。
查询
死锁
数据库
查询
死锁
数据库,当同一张表存在同时写,并且写的过程比较耗时,此时就
会
引起
数据库
死锁
解决 .NET Core 中 GetHostAddressesAsync
引起
的 EnyimMemcached
死锁
问题
主要介绍了解决 .NET Core 中 GetHostAddressesAsync
引起
的 EnyimMemcached
死锁
问题的相关资料,需要的朋友可以参考下
C++ Builder
13,822
社区成员
102,680
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章