【问题标题】:How to use the TBB task_arena class with enqueue and wait_until_empty如何使用带有 enqueue 和 wait_until_empty 的 TBB task_arena 类
【发布时间】:2014-03-12 04:58:57
【问题描述】:

我正在寻找如何使用 Threaded Building Blocks task_arena 类与 enqueuewait_until_empty 的示例。

这是我正在遵循的过程。如上述文档中所述,添加这些包括:

#define TBB_PREVIEW_TASK_ARENA 1
#include "tbb/task.h"
#include “tbb/task_arena.h”

然后,使用tbb::task::allocate_root 创建任务并使用tbb::arena::enqueue 将它们排入队列。

但是,我在竞技场wait_until_empty() 方法上收到此错误:

错误:‘class tbb::interface7::task_arena’没有名为‘wait_until_empty’的成员

我使用的是最新版本 4.3,更新 3。

请提供一个简单的工作示例。

【问题讨论】:

    标签: c++ multithreading c++11 concurrency tbb


    【解决方案1】:

    在最近的更新中,方法 wait_until_empty 已从类 task_arena 中删除。不幸的是,您引用的 software.intel.com 上的文档尚未更新。我建议使用threadingbuildingblocks.org 的文档,它是最新的。

    该文档页面中的示例演示了如何结合task_arenatask_group 来实现类似于wait_until_empty 的功能。

    【讨论】:

    • 感谢您的信息。场景是:你有一个简单的程序,它启动,使用enqueue 将许多任务排入队列,然后终止。如何确保程序终止前所有任务都已完成?
    • 如果使用enqueue 更新文档并添加更多示例,那就太好了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-18
    • 1970-01-01
    • 1970-01-01
    • 2018-06-08
    相关资源
    最近更新 更多