如何在运行时以DAG的形式组合多个函数

How can I combine several functions in the form of a DAG at runtime

本文关键字:组合 函数 运行时 DAG      更新时间:2023-10-16

我有几个类,每个类的子类都是一个运算符。运算符有几种不同类型的输入和输出:图像、数字、字符串。每个子类实现一个执行计算的run()方法。现在我想为这些操作符设计一个容器,从简单的操作符中制作更大的操作符。容器应该尽可能高效,所以我计划使用线程。我在Boost图库中找到了一个示例,它允许我计算应该进行计算的顺序:http://www.boost.org/doc/libs/1_49_0/libs/graph/doc/file_dependency_example.html,但我认为可能有更好的方法:每个操作员都可以在阻塞状态下等待,直到所有输入都准备好。如果容器将Operator子类化,允许递归地组合它们,那就太好了。我有一种感觉,这是一个已知的设计模式。

也许您可以使用TBB的流程图?

http://software.intel.com/en-us/blogs/2011/09/08/the-intel-threading-building-blocks-flow-graph-is-now-fully-supported/

我找到了一个与我的描述相匹配的设计模式:复合模式。

复合模式描述了一组对象将以与对象的单个实例相同的方式进行处理