問題タブ [iasyncenumerable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - IAsyncEnumerable を安全に反復処理して、バッチでメッセージを処理するためにコレクションをダウンストリームに送信する方法
IAsyncEnumerable を使用した LINQのチャットを見て、 IAsyncEnumerablesの拡張メソッドを処理する方法についての洞察を得ることができましたが、率直に言って、実際のアプリケーション、特に私の経験レベルでは十分に詳しく説明されていませんでした。IAsyncEnumerable
s のドキュメントはまだ実際には存在しません
IAsyncEnumerable
ファイルから読み取り、ストリームで何らかの変換を行い、 を返し、次のように、任意の数のオブジェクトが取得された後にそれらのオブジェクトを下流に送信しようとしています。
ここまで読んで分かったのは、この行はs (またはs)await foreach
を使用するデータに取り組んでいるため、前もってカウントしていないということです。また、スレッド間でそのデータを共有することはあまりスレッドセーフではないように見えるため、リスト変数を使用して長さチェックを行うこともためらっています。Task
ValueTask
System.Linq.Async
関連する拡張メソッドを使用できることを期待して、パッケージを使用しています。の形でいくつかの約束を見ることができますTakeWhile
が、私がしようとしているタスクがどれほどスレッドセーフであるかについての私の理解はすべてではなく、自信を失います.
正しい方向への助けやプッシュは大歓迎です、ありがとう。
c# - C#8 IAsyncEnumerable 内で yield リターンを並列化する
非同期列挙子を返すメソッドがあります
そして発信者:
は高価な操作であるためDoWork
、何らかの方法で並列化することをお勧めします。したがって、次のように機能します。
しかし、私は内部から利回りを返すことができないParallel.Foreach
ので、これを行う最善の方法は何だろうか?
返される結果の順序は関係ありません。
ありがとう。
編集:申し訳ありませんが、 のコードをいくつかDoWorkAsync
省略しました。質問とはあまり関係がないため、上記のコードに入れなかったものを実際に待っていました。今すぐ更新
Edit2: DoWork
私の場合、ほとんどが I/O バウンドで、データベースからデータを読み取っています。