线程暂停求解

xiayuxuan91 2012-11-15 04:19:44
WaitForMultipleObjects使主线程等待子线程结束,而子线程需要主窗口的WM_TIMER消息触发。。主线程等待时,结果不产生WM_TIMER消息了,突然发现线程在等待中死亡了,无限等啊。。。求好的解决方法。=.=不要跟我提设置时间等待限制。我等待的时间是永远
...全文
125 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
bluegem218 2012-11-15
  • 打赏
  • 举报
回复
把你新开的线程做无限循环。

while(1)
{
  这里加查询消息列表的函数,以及处理wm_timer的代码;
}
baichi4141 2012-11-15
  • 打赏
  • 举报
回复
引用 3 楼 xiayuxuan91 的回复:
线程倒是可以检查另一个,但我的是主线程检查,如果不停检查,同样子线程也不能触发
如果要求快速反应,主线程可以创建一个新线程专门用于检查该子线程 如果只要求任务次序不要求反应速度,主线程直接OnTimer,100ms检查一次 解决方法有很多种,就看你去不去想
sunwairater 2012-11-15
  • 打赏
  • 举报
回复
嗯,最好说说是什么应用场景,为什么主线程需要死等从线程? 是在不行的话,主线程可以新创建一个proxy的工作线程,由这个proxy来跟从线程死磕,这样也不耽误主线程发WM_TIMER。。。
冷月清晖 2012-11-15
  • 打赏
  • 举报
回复
楼主你还是说说你为什么要这样做吧,需要解决什么问题,肯定有更好的思路。
转角天边 2012-11-15
  • 打赏
  • 举报
回复
WaitForMultipleObjects本来就是防止两个线程同时运行,你这不是自相矛盾了么
xiayuxuan91 2012-11-15
  • 打赏
  • 举报
回复
引用 1 楼 baichi4141 的回复:
楼主都已经找到问题原因了,就不能自己想出解决方法么? 一个线程完成某个任务的时候发送消息或设置变量,另一个线程接收到消息或不停监测这个变量,判断该任务完成则执行某个任务,不难想到吧? 反正我很少用WaitForMultipleObjects,宁可不停检测一个bool变量,如果为真则执行某个任务,如果为假则sleep
线程倒是可以检查另一个,但我的是主线程检查,如果不停检查,同样子线程也不能触发
xiayuxuan91 2012-11-15
  • 打赏
  • 举报
回复
等等时间为WaitForSingleObject(handle_lrc,INFINITE);是考虑点暂停时是不能统计时间的。要是统计了就出错了。可是这样子线程永远不会退出,触发不了主线程等待的事件了
baichi4141 2012-11-15
  • 打赏
  • 举报
回复
楼主都已经找到问题原因了,就不能自己想出解决方法么? 一个线程完成某个任务的时候发送消息或设置变量,另一个线程接收到消息或不停监测这个变量,判断该任务完成则执行某个任务,不难想到吧? 反正我很少用WaitForMultipleObjects,宁可不停检测一个bool变量,如果为真则执行某个任务,如果为假则sleep

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧