英特尔TBB:图表池

时间:2012-03-06 12:36:56

标签: c++ multithreading graph tbb

我有一个数据处理模型,它由许多处理数据块的算法链组成。 每个链都是算法图,我用TBB图类实现了。

现在我希望有一个类似“图形池”的东西,即一个任务池,每个任务包含一个tbb :: graph。通过这种方式,我可以在数据块上并行运行算法链。

您是否可以指出任何类似于“图表池”的TBB示例,或者您可能建议并提示实施它?

2 个答案:

答案 0 :(得分:1)

我的建议是你使用tbb :: concurrent_queue或tbb :: concurrent_vector,它的优点是你可以在多次访问时调整它的大小。我个人提示,创建一个锁定/图形对象,以便您永远不会并行修改对象。

http://threadingbuildingblocks.org/wiki/index.php?title=Concurrent_Vector

可以在此处找到队列的示例: https://sites.google.com/site/samplecodesproject/tbb/containers-3/concurrent_queue

答案 1 :(得分:0)

我不确定我完全明白你到底想要达到的目的,但让我们试试:)。 似乎只需要正确的source_node(https://www.threadingbuildingblocks.org/docs/help/reference/flow_graph/source_node_cls.htm)就可以将新的数据块投入到流图中进行处理。 流图实例可以被视为以不同方式编写的算法(例如tbb :: parallel_pipeline)。它不应被视为列表或向量之类的数据结构。所以很可能你不需要图表池:)