你应该总是在启动线程后放置 join() 吗?
Should you always put join() after launching a thread?
我想知道在启动线程后不立即放置 join()
是否有任何优势?
std::thread t(func);
// some code ...
t.join();
它是否给您带来任何优势,或者在线程启动后使用它总是更可取?
std::thread t(func);
t.join();
// some code ...
如果您在启动新线程后立即使用 join()
,那么它将阻止(等待)执行 join()
调用,直到新线程完成 运行(击败整个您从启动新线程获得的并行化的目的)。因此,如果您想在线程 t
执行时在主线程上执行“一些代码”,join()
应该在“一些代码”之后。
我想知道在启动线程后不立即放置 join()
是否有任何优势?
std::thread t(func);
// some code ...
t.join();
它是否给您带来任何优势,或者在线程启动后使用它总是更可取?
std::thread t(func);
t.join();
// some code ...
如果您在启动新线程后立即使用 join()
,那么它将阻止(等待)执行 join()
调用,直到新线程完成 运行(击败整个您从启动新线程获得的并行化的目的)。因此,如果您想在线程 t
执行时在主线程上执行“一些代码”,join()
应该在“一些代码”之后。