【发布时间】:2012-01-31 20:08:43
【问题描述】:
我正在研究一种用于在 C++ 中创建应用程序以在不同内核中同时处理多个输入的架构。每个输入同时在一个内核中处理。每个进程放在一个核心上,相同的过滤器都会被处理通过。例如:filter1.apply()、filter2.apply() 和 filter3.apply()。 4 核 4 输入的流程如下所示:
[核心 1] [核心 2] [核心 3] [核心 4] | | | | V V V V 输入1 输入2 输入3 输入4 | | | | V V V V 过滤器1 过滤器1 过滤器1 过滤器1 | | | | V V V V 过滤器2 过滤器2 过滤器2 过滤器2 | | | | V V V V 过滤器3 过滤器3 过滤器3 过滤器3 | | | | V V V V 输出1 输出2 输出3 输出4我不知道哪种架构或设计模式适合这个。如果您能给我一些工件(文档或示例应用程序)以供进一步阅读,那就太好了。
提前致谢。
【问题讨论】:
-
@Joachim:感谢您的编辑。实际上,我也做得更好:)
-
顺便说一句,看起来如果您可以以某种方式将过滤器序列编译为单个过滤器,那么这可能是一个净赢,因为您总是在做同样的事情 - 一个有点像 OpenGL 中的显示列表。
-
在单个过滤器中编译过滤器并不好,因为函数的范围(行数)非常大。我希望这种架构在未来能够更灵活地添加新的过滤器。例如:添加过滤器 4 和过滤器 5,然后我只是简单地调用:filter1.apply()、filter2.apply()、filter3.apply()、filter4.apply() 和 filter5.apply()。
-
很公平 - 通常需要在性能/灵活性之间进行权衡。
-
如果过滤器非常特殊,DSL 可能会有所帮助。这样您还可以在编译时优化过滤器表达式。
标签: c++ multithreading architecture