在C ++中使用标准串行调度队列?

时间:2011-10-20 12:11:48

标签: c++ task-queue

我想写一个玩具应用程序,它将以1个实例开始并一直增长到达到5fps。该实例有一个run()方法,该方法应该运行<1ms。因此,我不想使用实际线程来使用串行调度队列来执行任务并执行它们。我有一台多核机器,我不想锁定,如果我可以避免它。我不想写一个串行调度队列,但是我可以使用C ++(0x?)标准串行调度队列吗?

任务可以重新添加自己,或者队列可以在每个元素之间循环。这对我来说无关紧要

1 个答案:

答案 0 :(得分:2)

如果要使用标准队列,但没有锁定,则查找无锁队列实现。 C ++ 11中没有标准的无锁队列。

为什么不使用每个核心/线程的任务向量而在它们之间循环,而不是单个队列?例如,如果您有4个CPU和线程,则为每个线程分配一个任务向量。在他们之间平均分配任务,然后就像你在最后一句中的循环注释中提到的那样迭代它们。那个没有锁定,并且具有相同的处理顺序保证(即没有)来自多个线程的队列会有。

相关问题