小编Oli*_*yre的帖子

依赖任务图:.Net 中整齐的并行执行?

.Net 中是否有一种优雅的方法可以在多线程中执行命令图,其中每个命令只有在其所有父命令都被执行后才能执行?

例如,Visual Studio 在多线程编译解决方案时执行此类计算(每个项目在其所有依赖项都已编译后即可编译)。

另一个例子是,如果您想在不破坏关系约束的情况下逐表克隆(或加载)完整数据库,从顶级父表开始,然后执行子表。(假设至少存在一种表的拓扑排序)。

System.Threading.Tasks.Task 似乎使用“task.ContinueWith()”处理命令链的情况,但它似乎不会威胁命令图的情况。

尝试在任务流程开始时将任务与“Task.WaitAll(dependencies)”一起使用是可行的。但它效率不高,因为它开始启动第一个任务(可能会等待)而不是启动准备好的任务。这是我用来检查的代码:

using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Threading;

namespace ParallelProcessing
{
    /// <summary>
    /// There is the exemple Dependency graph:
    /// 
    /// MyTypedDataSet (long job)         MyTools                   
    ///  ^                   ^             ^   ^                       
    ///  |- Project 0        |             |   |- MyControls           
    ///  ...                 |             |                 
    ///  |- Project 99       |- MyForm ----|
    ///           
    /// 
    /// 'MyControls' should compile quickly after MyTools. Instead of that, MyControls is flooded by Project 0..99
    /// </summary>
    public …
Run Code Online (Sandbox Code Playgroud)

.net c# task-parallel-library

2
推荐指数
1
解决办法
3254
查看次数

标签 统计

.net ×1

c# ×1

task-parallel-library ×1