0

我的问题类似于生产者消费者问题。例如,我需要并行运行 999 个生产者和 1 个消费者。基本上所有 999 个生产者都做同样的任务。

4

1 回答 1

3

诸如 TBB(以及 Cilk Plus 和 PPL)之类的并行框架专注于可选的并发性,这使它们能够获得足够的数据来保持机器繁忙但不会使其过载。

如果需要生产者之间的并发性,那么大多数 TBB 构造是不合适的。例如,tbb::parallel_for不承诺它会并行运行任何东西。如果目前可用,它只使用并行性。对于强制并发,您需要std::thread为每个生产者单独设置一个。在运行 999 个线程的情况下,除非您有一台具有 999 个硬件线程的机器,或者大部分时间保持大部分线程处于休眠状态(例如,通过使用条件变量),否则不要期望有太多的加速。

于 2014-02-25T16:12:45.850 回答