如果我有一个任务,使用c ++ 11 async<>生成10,000个异步线程。 /期货。 async是否自动管理并发线程数?
具体来说,如果我有一台8核机器,我的程序会产生10,000个线程,还是它足够聪明,可以将它们排成8个批次(或者对我的机器来说是理想的)?
答案 0 :(得分:2)
这是执行质量问题,不是标准规定的。
但是,如果任何线程子集阻塞,则其余线程必须前进。所以它不能'跑8,等他们完成,然后开始下8'。它可以监视这些线程的阻塞和/或同步通信,并且缺少那些不那么新的线程。如果它们以线程安全的方式阻塞或读/写,则无限期地暂停(或不启动)其他线程不是(我认为)合法,并且绝对是一个坏主意。