gpt4 book ai didi

c++ - 哪些架构或设计模式适合此应用程序?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:41:15 24 4
gpt4 key购买 nike

我正在研究一种架构,用于在 C++ 中创建应用程序以在不同内核中同时处理多个输入。每个输入都在一个内核中同时处理。每个进程放在一个核心上,同样的过滤器也会被处理通过。例如:filter1.apply()、filter2.apply() 和 filter3.apply()。 4 个输入的 4 个内核的过程如下所示:

[core 1]   [core 2]    [core 3]   [core 4]   |          |            |         |        V          V            V         V  input1     input2      input3     input4   |          |            |         |       V          V            V         V  filter1    filter1     filter1    filter1   |          |            |         |       V          V            V         V  filter2    filter2     filter2    filter2   |          |            |         |       V          V            V         V  filter3    filter3     filter3    filter3   |          |            |         |       V          V            V         V  output1   output2      output3    output4

我不知道哪种架构或设计模式适合这个。如果您能给我一些工件(文档或示例应用程序)以供进一步阅读,那就太好了。

提前致谢。

最佳答案

通常使用线程池来实现这样的设计。对于独立进程,它们几乎可以无限扩展。您可以在 TBB 和 PPL 中找到简单的实现。他们提供许多标准算法和容器的并发相关版本。例如,在这个示例中,我使用了 concurrent_vector,它是一个类似于 vector 的容器,可以同时从多个线程安全地进行变异,并且 parallel_for_each,它同时在多个线程上运行该函数。

concurrent_vector<output> outputs;
std::vector<input> inputs;
parallel_for_each(inputs.begin(), inputs.end(), [](input& input) {
outputs.push_back(filter3(filter2(filter1(input))));
});

关于c++ - 哪些架构或设计模式适合此应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8701199/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com