.net 如果每个任务都依赖于以前的输出,那么管道任务如何并发运行?

.net 如果每个任务都依赖于以前的输出,那么管道任务如何并发运行?,.net,pipeline,.net,Pipeline,它表示每个任务都是并发处理的,后续的每个任务都取决于前一个任务的输出。但是,如果后续任务的处理需要前一个任务的输出,以便处理某些内容,那么它们如何能够同时发生?这难道不意味着一个任务需要它前面的任务在开始之前完成它的执行吗?(这听起来不是很并行或平行于我) 例如,在它们的图表中,它们显示了使用这些步骤处理字符串的过程 读取字符串 正确案例 造句 写入输出 在我阅读所有大小写正确的字符串之前,我如何创建句子 装配线类比听起来也不是很平行,因为如果装配中的一个阶段中断,那么部分构造的产品如何移动到下

它表示每个任务都是并发处理的,后续的每个任务都取决于前一个任务的输出。但是,如果后续任务的处理需要前一个任务的输出,以便处理某些内容,那么它们如何能够同时发生?这难道不意味着一个任务需要它前面的任务在开始之前完成它的执行吗?(这听起来不是很并行或平行于我)

例如,在它们的图表中,它们显示了使用这些步骤处理字符串的过程

  • 读取字符串
  • 正确案例
  • 造句
  • 写入输出
  • 在我阅读所有大小写正确的字符串之前,我如何创建句子

    装配线类比听起来也不是很平行,因为如果装配中的一个阶段中断,那么部分构造的产品如何移动到下一个状态进行进一步装配。

    “…即使这些值是按顺序处理的。您可以将软件管道视为类似于工厂中的装配线,装配线中的每个项目都是分阶段构建的。部分组装的项目从一个组装阶段传递到另一个组装阶段。装配线的输出与输入的顺序相同。”

    是关于你的主题的更多信息

    简言之,任务是分开的,因此如果任务(n+1)从任务(n)中得到输出,任务(n+1)可以在任务(n)被阻塞或非常繁忙时开始处理该数据。

    单个项目按顺序处理,但整个项目序列的处理是并行的(主要是并行的)。给定任务处理完某个项目后,该项目将被发送到下一个任务,该任务将立即开始处理该项目。如果没有管道,第一个任务将必须处理整个值序列,然后第二个任务才能开始。MSDN文章中的此图将有助于:


    请提供更多的上下文信息?如果您可以链接到MSDN文章并指定您所指的框架或工具,这将非常有用。否则,没有人知道您在说什么。@Asad ok添加了链接,因此这与单个产品无关,而与同时处理多个产品有关?我想我现在明白了,我非常专注于单个项目的任务。谢谢:)是的。项目和任务越多,使用管道的好处就越大。如果只有一个项目要处理,就没有并发性。可以使用阿姆达尔定律估计并发性的好处: