【发布时间】:2016-12-30 15:54:39
【问题描述】:
有没有办法设置使用异步函数(从未来)可以创建的最大线程数? 我更喜欢使用 async/future.get 因为它可以转换为同步/生成多任务模型,这很常见 在有关算法的教科书中(即 Cormen)。我希望能够获得 T[p](使用 p 个处理器/线程完成程序的时间)。
【问题讨论】:
-
您可以将所有对 async 的调用放在一个类的方法中,如果对成员函数的调用次数高于您在构造实例时可以指定的某个限制,该方法将拒绝执行任何操作类的。如果您的程序达到或超过限制,您希望您的程序做什么?
-
快速而肮脏的解决方案:将信号量初始化为您希望能够同时进行的线程数。让您的线程程序等待该信号量。这并不能将您从创建线程的开销中解放出来,但至少任何额外的线程都会安静地旋转。
-
或者:有一个原子(优先级)队列,让池中的工作线程从队列中获取下一个任务,但您已经说过您宁愿进行同步/生成。
标签: c++ multithreading parallel-processing