无需加入就启动多个线程

Nik*_*tke 7 c++ multithreading c++11

(如何)我可以像这样启动多个线程:

for (i = 0; i < 10; i++) {
   std::thread (myfunction, i, param2, param3);
}
Run Code Online (Sandbox Code Playgroud)

没有加入?

Snp*_*nps 12

试试这个

for (int i = 0; i < 10; ++i) {
    std::thread{myfunction, i, param2, param3}.detach();
}
Run Code Online (Sandbox Code Playgroud)

或者如果您想稍后加入线程,那么将它们放入std::vector.

std::vector<std::thread> v;
for (int i = 0; i < 10; ++i) {
    v.emplace_back(myfunction, i, param2, param3);
}

// Do something else...

for (auto& t : v) {
    t.join();
}
Run Code Online (Sandbox Code Playgroud)


Pau*_*ans 5

只是不要打电话join()detach()而是。

  • 也许你可以更详细地解释 detach() (3认同)
  • detach() 允许线程独立运行。join() 将阻塞父线程直到完成。 (3认同)