【问题标题】:Controlled Parallel task execution what to use受控并行任务执行使用什么
【发布时间】:2018-08-13 12:13:28
【问题描述】:

我正在一些对象上运行并行任务,以使其更快,它们并行运行 4 个。 现在有一个新要求,我需要执行一个任务,需要一次执行一个,而其他人必须等待(其他人不能执行另一个任务)。

我无法使测试同步。

请查看下面的图片作为更好的解释。

一次执行一个就完成了,但是我想到了使用一个信号量来等待开始和结束的4个对象。 问题是 Semaphore 并没有等待所有的完成才让另一个进入。

它只能在所有 4 个都完成后开始和离开这个执行。 我应该用什么来做这个?

【问题讨论】:

    标签: c# parallel-processing semaphore


    【解决方案1】:

    为此使用 Barrier 对象,参与计数为 4。这是一个示例:

    var barrier = new Barrier(4);
    

    然后在你的任务方法中:

    //do some work
    
    //now, wait
    barrier.SignalAndWait();
    

    所有方法都会等到所有参与者都调用了SignalAndWait(),然后它们才会继续。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多