← C#

LESSON / ARTICLE

高度な非同期・並行処理

非同期パイプライン、バックプレッシャー、キャンセル伝播を設計します。

高度な並行処理の設計

複数の非同期処理を組み合わせるときは、単にTaskを大量に開始するのではなく、同時実行数・キュー長・キャンセル・エラー伝播を設計します。

バックプレッシャー

処理する側よりデータを受け取る側が遅い場合、無制限にキューへ積むとメモリを圧迫します。容量制限付きキューやChannelなどを使い、供給側の速度を調整します。

キャンセル伝播

CancellationTokenを処理の境界へ渡し、要求が届いたら新しい作業を開始しないようにします。すでに開始した外部処理がキャンセル可能かも確認します。

障害分離

一つの処理の失敗が全体へ波及すべきか、部分的な失敗として扱うべきかを要件で決めます。リトライには回数上限、待機時間、冪等性が必要です。