你应该总是在启动线程后放置 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() 应该在“一些代码”之后。