【发布时间】:2017-01-05 12:42:52
【问题描述】:
我有一个相当复杂的设置,需要一些输入来解决它。
我有一个由任务 1、2a、2b、2c、3a、3b、3c 和 4 组成的进程 A。
任务 1 必须首先运行,并且没有其他任务并行运行。
任务 2a,2b,2c 必须一个接一个运行,但可以与 3a,3b,3c 并行执行(也必须一个接一个运行。任务 4 只能在 3c 和 2c 完成后运行.
我首先通过 Priority Queue 实现了这一点,并尝试使用 Priorities 和一种机制来管理它,该机制仅使一种类型的出队,这意味着 2a 和 3a 可以同时出队,2b 和 3b 等等。
但是如果 3a 完成并且可以开始 3b,它必须等到 2a 也完成。我需要一个队列机制的想法,它可以以某种方式处理我的情况。我知道这很复杂,但任何提示都可能对我有所帮助。
【问题讨论】:
-
TPL 数据流的胜利。 google.co.uk/search?q=tpl+dataflow
-
这是一个相当广泛的问题,您能缩小问题范围并发布一些现有代码吗?很难简单地回答这个问题。
-
每个并行任务组运行后需要阻塞。您可以使用 WaitHandler 来阻止。见 msdn:msdn.microsoft.com/en-us/library/58195swd(v=vs.110).aspx
标签: c# parallel-processing queue