如果我有一项任务,例如,使用c++11 async<> /期货生成10,000个异步线程。异步是否自动管理并发线程的数量?
具体来说,如果我有一台8核心机器,我的程序会生成10,000个线程吗?或者,它是否足够聪明地将它们排成8的批(或者对我的机器来说是理想的)?
发布于 2015-03-31 22:29:46
这是一个执行质量问题,不是标准所规定的。
但是,如果线程的任何子集阻塞,则其余线程必须前进。所以它不能‘运行8,等待他们完成,然后开始下8’。它可以监视那些线程来阻塞和/或同步通信,并且缺少那些不是lauch的新线程。如果它们以线程安全的方式阻止或读/写,让其他线程无限期地挂起(或不启动)是不合法的(我认为),而且肯定是个坏主意。
https://stackoverflow.com/questions/29377196
复制相似问题