所以我一直使用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 谢谢你的帮助!
答案 0 :(得分:2)
不要在刚刚创建的线程上调用join
- join
在主线程中专门等待speech_thd
终止,请参见此处:http://pubs.opengroup.org/onlinepubs/7908799/xsh/pthread_join.html