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

Use a Standard Serial Dispatch Queues in C++?

本文关键字:调度队列 标准 c++      更新时间:2023-10-16

我想写一个玩具应用程序,它将从1个实例开始,直到达到5fps。实例有一个run()方法,运行时间为1ms。因此,代替实际的线程,我想使用串行调度队列来接受任务并执行它们。我有一个多核机器,我不喜欢锁定,如果我可以避免它。我不想写一个串行调度队列,但是否有一个c++ (0x?)标准串行调度队列我可以使用?

任务可以将自己重新加入,或者队列可以在每个元素之间循环。我无所谓

如果您想使用标准队列,但不使用锁,那么请寻找无锁队列实现。c++ 11中没有标准的无锁队列。

与其使用单个队列,为什么不使用每个核心/线程的任务向量并在它们之间循环?例如,如果您有4个CPU和线程,则为每个线程设置一个任务向量。在它们之间平均分配任务,然后迭代它们,就像你在最后一句循环评论中提到的那样。这将没有锁定,并将有相同的处理顺序保证(即没有),从多个线程队列将有。