並列タスク/待機で.NETイテレータを使用したいのですが。このようなもの:
IEnumerable<TDst> Foo<TSrc, TDest>(IEnumerable<TSrc> source)
{
Parallel.ForEach(
source,
s=>
{
// Ordering is NOT important
// items can be yielded as soon as they are done
yield return ExecuteOrDownloadSomething(s);
}
}
残念ながら、.NETはこれをネイティブに処理できません。@svickによるこれまでのベストアンサー-AsParallel()を使用します。
ボーナス:複数のパブリッシャーと単一のサブスクライバーを実装する単純な非同期/待機コードはありますか?加入者は譲歩し、パブは処理します。(コアライブラリのみ)