C++ std::thread join()函数调用

使用std::thread时,对创建的线程有两种操作:等待/分离,也就是join/detach操作。join()操作是在std::thread t(func)后“某个”合适的地方调用,其作用是回收对应创建的线程的资源,避免造成资源的泄露。detach()操作是在std::thread t(func)后马上调用,用于把被创建的线程与做创建动作的线程分离,分离的线程变为后台线程,其后,创建的线程的“死活”就与其做创建动作的线程无关,它的资源会被init进程回收。

 join是等待被创建线程的结束之后回收它的资源。因此,join的调用位置就比较关键。两种解决方式,防止join阻塞或者资源泄露:

1.主动让被创建线程结束,如设置退出标志位等;

2.在对象的析构函数中调用线程的join函数,等待资源回收。

你可能感兴趣的:(C/C++,c++,jvm,开发语言)