首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

boost的thread创建的线程怎么结束呢

2013-04-02 
boost的thread创建的线程如何结束呢?本帖最后由 rehen 于 2013-03-29 21:40:11 编辑最近在学习boost,发现

boost的thread创建的线程如何结束呢?
本帖最后由 rehen 于 2013-03-29 21:40:11 编辑 最近在学习boost,发现创建的线程的join方法很鸡肋,因为调用join后会使调用线程挂起,等待被调用的线程执行结束,那样的话还要线程干嘛?直接用函数就好了。不知道有没有人可以解答一下。

还有一个问题就是如何结束一个boost创建的线程,假如我有一个这样的需求。
一个对话框应用程序,界面上有两个按钮,一个是“开始”一个是“退出”,点击“开始”时创建一个线程,这个线程会执行一个任务,whatever,可能是下载一个大文件吧,然后在下载过程中需要在窗口上实时刷新当前进度。而在下载过程中“退出”按钮随时可能被点击,这时要求要先退出线程,再退出应用程序。

这个需求是比较简单的,不要让我用Windows的那套创建线程的方式来实现,我已经说了是学习用,我只想了解用boost要怎样实现这样的需求。谢谢各位大侠。 boost thread
[解决办法]

引用:
删掉m_thread->detach()??
那靠什么来退出线程呢?

detach()之后,m_thread不再代表一个可执行线程,interrupt()这些都会无效,所以我昨天才一直没有捕获到异常。今天删掉detach()之后试验了一次,发现可以捕获了。你可以在catch里修改一个全局变量看效果,或者在主线程里加入5s休眠并重新输出下载进度,这时候进度不会再改变了,也就代表线程确实是结束了。

热点排行
Bad Request.