这种类似流水线的并行化方法有名称吗?

Is there a name for this pipelining-like parallelization method?

最近,我正在尝试优化一个单线程循环,其核心可归结为

while (true)
{
   a = A(x)
   b = B(a)
   c = C(b)
}

换句话说,每一步都取决于上一步的结果。这些函数中的每一个都执行 CPU 密集操作。

我最终创建了 2 个队列和 2 个新线程并将其解耦,以便原始线程执行

/* on existing thread */ while (true) queue1.Enqueue(A(x))
/* on new thread #1 */   while (true) queue2.Enqueue(B(queue1.Dequeue()))
/* on new thread #2 */   while (true) c = B(queue2.Dequeue()))

现在 3 个函数可以 运行 并行,更好地利用多核。

看起来很基础,必须要有一个名字。我找不到它。它与 pipelining 所做的非常相似,只是这是一种线程并行化技术。

更彻底的网络搜索显示它称为 管道并行 by some。这是一个描述性名称。

在上面链接的其中一个页面上,还有该方法的直观可视化: