C++11 async - 最佳线程数的管理是自动的吗?

C++11 async - is management of optimal number of threads automatic?

如果我有一个任务使用 c++11 async<> / futures 生成,比如说,10,000 个异步线程。异步是否自动管理并发线程数?

具体来说,如果我有一台 8 核机器,我的程序会生成 10,000 个线程,还是足够聪明地将它们排入 8 个批次(或任何适合我的机器的批次)?

这是一个实施质量问题,不是标准强制要求的。

但是,如果任何线程子集阻塞,则其余线程必须前进。所以它不能'run 8, wait for them to finish, then start next 8'。它可以监视那些阻塞 and/or 同步通信的线程,并且缺少那些不会启动新线程的线程。如果它们确实以线程安全的方式阻塞或read/write,那么无限期地暂停(或不启动)其他线程是不合法的(我认为),而且绝对是个坏主意。