您的位置:首页 > 其它

boost::thread新建线程如何不阻塞

2016-08-10 11:25 1256 查看
boost.thread,google了下基本都是用join的方式运行线程,但是这样不是阻塞住了么,那如果我想继续执行join下面的语句就不行了,有没有别的方法?

join:等待线程结束,但如果线程里面有while(1)循环,那么线程将永不结束(除非主程序退出运行),如果我想继续执行join下面的语句就不行了。

为了防止程序终止,就需要对新建线程调用join() 方法。join() 方法是一个阻塞调用:它可以暂停当前线程,直到调用 join() 的线程运行结束。

解决boost::thread::join() 的阻塞

static void onRun()
{

for(;;)

{

//do sth

}
}
boost::thread th(&onRun);

th.timed_join(boost::posix_time::seconds(1));

//这样主线程在onRun循环停留一秒钟就会返回,不会阻塞

//
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Boost库