提升异步线程

时间:2013-05-16 04:20:05

标签: c++ boost boost-thread

所以我一直使用boost作为线程解决方案。 我似乎遇到了一个问题,我创建的线程不会让执行它们的主线程继续。 例如:

int main(){
    while(1){
        speech listen; //create speech object
        boost::thread speech_thd(boost::bind(&speech::Run,&listen));
        speech_thd.join();
        std::cout<<"test\n";
        //Some sleep call here 
    }

“test”调用仅在speech_thd执行完毕后打印。 我如何创建它以便我在main(1)上执行主程序? 如果我能做到这一点,我显然会在while(1)之外移动线程创建:P 谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

不要在刚刚创建的线程上调用join - join在主线程中专门等待speech_thd终止,请参见此处:http://pubs.opengroup.org/onlinepubs/7908799/xsh/pthread_join.html