C++ 重新分配线程对象

示例

我们可以创建空线程对象,并在以后分配工作。

如果我们将线程对象分配给另一个活动joinable线程,  std::terminate则将在替换线程之前自动调用该线程对象。

#include <thread>

void foo()
{
    std::this_thread::sleep_for(std::chrono::seconds(3));
}
//创建100个不执行任何操作的线程对象
std::thread executors[100];

// 一些代码

// 我现在想创建一些线程

for (int i = 0;i < 100;i++)
{
    // 如果此对象未分配线程
    if (!executors[i].joinable())
         executors[i] = std::thread(foo);
}