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

标签 c++ task-queue

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

任务可以将自己添加回去,或者队列可以在每个元素之间循环。对我来说无所谓

最佳答案

如果你想使用标准队列,但没有锁定,那么寻找一个无锁队列实现。 C++11 中没有标准的无锁队列。

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

关于c++ - 在 C++ 中使用标准串行调度队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7835742/

相关文章:

c++ - 作为模板类中的参数的函数

c++ - 有没有一种方法可以在没有虚拟的情况下使用基类指针调用派生类函数

python - 如何在没有命令行界面的情况下启动 redis 队列工作程序?

c++ - 使用三角位置由点绘制的圆。 SDL2

c++ - static_assert 一个类型属于 std::variant 接受的类型

php - PHP与C++之间的通信

java - 拉队列leaseTasks不返回任何TaskHandles

performance - Google App Engine 任务队列

java - 大量单线程任务队列

php - 如何将 PHP 谷歌应用程序引擎应用程序中的任务添加到拉取队列?