需要创建任意数量的 jthread 线程。在程序运行时确定它们的数量。
发现很多类似的例子:
void spawnThreads(int n) {
jthread threads[n];
for (int i = 0; i < n; i++)
{
threads[i] = jthread(foo, i);
}
}
结果证明它们显然不起作用,因为 cpp 禁止创建未定义大小的数组。之后我使用了一个动态数组,将第一行替换为:
jthread* threads = new jthread[n]{};
现在,线程已启动,但程序不会等待它们运行,而只是关闭。
如果它是线程,则由于代码中缺少 thread#.join(),会出现这种行为。但是 jthread 不需要 join() 操作,我作为新手感到困惑。