如何在运行时以DAG的形式组合多个函数
How can I combine several functions in the form of a DAG at runtime
我有几个类,每个类的子类都是一个运算符。运算符有几种不同类型的输入和输出:图像、数字、字符串。每个子类实现一个执行计算的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/
我找到了一个与我的描述相匹配的设计模式:复合模式。
复合模式描述了一组对象将以与对象的单个实例相同的方式进行处理
相关文章:
- 可组合的lambda/std::函数与std::可选
- 我需要将多个函数组合为一个函数
- 用常见虚拟函数实现的任意组合来实现派生类的正确方法是什么
- C++组合函数总是产生 0
- 组合函数参数包和默认参数
- 我在C++中使用提升哈希函数将 3 个双精度组合成一个面临冲突的哈希
- uncrustify:如何将多行 C 函数调用的参数组合到一行上?
- 如何将这两个函数组合成一个实现?
- 如何将两个代码组合成一个函数?
- 如何组合lambda,vairadic函数和函数指针?
- 使用Set/Get-like方法或GetSet组合函数
- 找不到如何创建使用指针、字符和 for 函数组合的程序
- 使用参数包在C++中组合 lambda 函数
- 使用类/函数模板组合进行意外诊断
- 将 libstdc++ 和其他函数组合到一个库中
- 如何在组合函数中使用 boost::asio::d efer()
- 2个模板构造函数的组合构建与变异模板.如何
- 按每个顺序测试每个函数组合
- 组合 std::vector 默认值和填充构造函数
- 我可以在C++中动态组合函数和类型吗?