我目前正在使用 std::async 以同时启动多个任务(4),在启动后我等待任务完成使用 std::future 对象。问题是当我看到系统监控时,它似乎已经创建了超过 13 个线程并且不会终止。
这是一段代码:
System system;
std::vector<Compressor> m_compressorContainer(4);
std::vector<future<void> > m_futures(4);
while( system.isRunning() )
{
int index=0;
//launch one thread per compressor
for ( auto &compressor : m_compressorContainer )
{
m_futures[index++] = std::async(std::launch::any, &Compressor::process, compressor );
}
//wait for results
std::for_each( m_futures.begin(),m_futures.end(), [](std::future<void> &future){ future.get(); } );
}
由于我正在等待每个线程的结束,我期望线程数将始终为 4 而不是 13。
不知道 ?