私は問題がありますが、並列化されるのに適していると思いますが、C#でこれをどのように表現するかはわかりません。一般的にこのプログラムでは、いくつかのオブジェクトについて高価なテストを実行します。私は "私が進むことができる"ことを確認するためにテストしているので、それらのテストのいずれかが失敗するかどうかを知る必要があります。しかし、いずれかのテストが失敗した場合、全体が失敗し、関数全体が保守を受けるべきです。擬似コードで:いくつかの項目をテストし、おそらくベールする並列パターン
...
var guys = getGuysToProcess().ToList();
foreach (myGuys guy in guys) {
if (!guy.TestForPossibleBadness())
return false;
}
C#のどのパターンは、私がこれを表現し、それらをすべて並行してテストするのに最適でしょうか?これらのいずれかが失敗した場合、他のテストは終了しなければなりません。その結果は重要ではないからです。このうち@mquanポイントとして
// untested
bool ok = getGuysToProcess().AsParallel().All(g => !g.TestForPossibleBadness());
が最も効率的ではないかもしれません:あなたはTPLに言及しているので
これは、ポスターの質問に対処していない「ビット」きれいに見えます1つのテストが失敗を通知したときの残りのテスト。 – mquander
@mquander:そうです、代替案を追加します。 –