メールボックス プロセッサ ループで、以前にそのようなコレクションに格納されていたブロッキング コレクション アイテムから読み取りました。このようなコレクションへの書き込みには同じループを使用するため、スレッドとして起動する必要があります。
async { process(queue.Take()) } |> Aysync.Start
私のコード全体の実行は遅く(比較的言えば)、原因は起動した新しいスレッドであると思われますが、スレッドプールをキックスタートしました
let toto = ThreadPool.SetMinThreads(300,300)
競合ポイントがここにある可能性を示すもう 1 つのヒントは、キューが空のときにのみ起動する (そしてセクション全体をロックする) 場合、実行時間は 350 ミリ秒から 7 秒まで大きく変化し、そうでない場合は約 5 秒になるということです。 10秒。
私の質問は次のとおりです。
- とにかく、ここでスレッドの作成を加速できますか
- メールボックスプロセッサ内で使用できる、この種の状況 (消費者/生産者?) をすでに処理する構造はありますか?