具有优先级和传递失败结果的任务调度

时间:2014-07-21 14:49:35

标签: c# multithreading task thread-priority

目前,我的代码看起来像这样。

public class myClass
{

    public myClass fullyReduce()
    {
        myClass old = this.ShallowCopy();
        myClass reduced = reduce();
        while(old!=reduced )
        {
            old = reduced ;
            reduced = old.reduce();
        }
        return reduced;
    }

    private myClass reduce()
    {
        //Takes 24 Milliseconds on average
        myClass FactorReduced = FactorReduction();
        if(FactorReduced != this)
            return FactorReduced();

        //Takes 6 Millisecounds
        myClass PrimeReduced = PrimeReduction();
        if(PrimeReduced != this)
            return PrimeReduced();

        //Takes 14 Millisecounds
        myClass FractionReduced = FractionReduction();
        if(FractionReduced != this)
            return FractionReduced();

        //And so fourth until
        return this;
    }
}

这样可行。

并行

然而,每个减少(FactorReduction,PrimeReduction,FractionReduction)并非并行运行并且一个接一个地运行。这些函数中的每一个都是线程安全的并且可以并行运行,而这并没有利用它。以何种方式我可以让所有这些都同时运行,并获取第一个以通过返回的结果,因为有时减少将无法进一步减少它。 / p>

优先级

此外,我的示例中运行任务的顺序取决于我编写它们的任意顺序。我宁愿能够为每个任务设置优先级(我计划从平均计算时间和平均成功中获得这些优先数字)

一个有用的答案可以显示基于示例代码的虚拟实现,它实现了代码以前对我需要的额外多线程所做的操作。

先谢谢,我已经尽力了解,如果你不明白我的意思,只需评论这个问题,我就会解决任何错误/模糊性。

0 个答案:

没有答案