目前,我的代码看起来像这样。
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>
此外,我的示例中运行任务的顺序取决于我编写它们的任意顺序。我宁愿能够为每个任务设置优先级(我计划从平均计算时间和平均成功中获得这些优先数字)
一个有用的答案可以显示基于示例代码的虚拟实现,它实现了代码以前对我需要的额外多线程所做的操作。
先谢谢,我已经尽力了解,如果你不明白我的意思,只需评论这个问题,我就会解决任何错误/模糊性。