多线程程序启动时如果子线程有断点有时会假死?

圣骑士 2009-07-20 04:29:32
程序开始运行后,开了一个子线程处理一些东西。

如果我在子线程代码中设置一个断点,那么启动时有时程序会假死,表现为界面出不来,很久才能停到那个断点,此时IDE反应期奇慢无比。

请问该问题怎么回事?
...全文
254 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
owldestiny 2009-07-23
  • 打赏
  • 举报
回复
关键看你子线程中的代码怎么写了,我一般会这么写的

//死循环保证子线程一直运行
while(1)
{
//测试标志是否为真,测试标志定义为全局变量,在主线程中可以对该标志进行修改
if(testFlag)
{
//执行你要进行的操作
}
}


这样就可以解决问题了
圣骑士 2009-07-23
  • 打赏
  • 举报
回复
问题解决了
beginthread不顶用,子线程设置断点调试启动偶尔UI界面仍然假死。

最后子线程延时启动(启动后等待了一会),确保主线程消息循环先运行,经多次测试,问题解决了。
red_berries 2009-07-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 demon__hunter 的回复:]
优先使用_beginthread()而不是createthread。
[/Quote]
up
上代码才是王道
oyljerry 2009-07-20
  • 打赏
  • 举报
回复
你的线程中是不是有什么阻塞操作导致UI假死...
可以线程中增加一些调试信息,打印一些日志等
机智的呆呆 2009-07-20
  • 打赏
  • 举报
回复
优先使用_beginthread()而不是createthread。
圣骑士 2009-07-20
  • 打赏
  • 举报
回复
首先我用的时createthread,难道换成AfxBeginThread就不死么?我搜了一些帖子,有的说是c++多线程调试问题,有的说是创建线程问题,还有一些专门结束假死IDE工程的工具,弄得我也不知道信谁。。。

有没有该问题的解释。下班了,只能回去试一试AfxBeginThread如何了。

另外sqs是我网名的缩写,呵呵。
god_sun 2009-07-20
  • 打赏
  • 举报
回复
敢问楼主sqs是什么意思!
本人名字简写就是sqs呵呵
god_sun 2009-07-20
  • 打赏
  • 举报
回复
怎么调用线程的?
最好用 AfxBeginThread
不要用createthread
光宇广贞 2009-07-20
  • 打赏
  • 举报
回复
设置调试环境呢吧……不是什么大问题吧……

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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