2.1.2 等待线程完成
如果你想确保在主线程退出前,子线程已经执行完毕,可以通过结合(joining)线程,来等待一个线程的完成。通过在相关联的std::thread示例上调用join()函数来实现,调用后,主线程在子线程运行期间将做不了任何有用的事,唯有等待。
struct func { int& i; func(int& i_) :i(i_) {} void operator()() { for (unsigned j = 0; j < 1000000; j++) { do_somnething(i); // 不断对引用的访问 } } }; void opps() { int some_local_state = 0; func my_func(some_local_state); std::thread my_thread(my_func); my_thread.join(); // 确保线程结束后,才退出 }