oli*_*dev 5 c++ architecture multithreading
我正在研究一种用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))));
});
Run Code Online (Sandbox Code Playgroud)