4

私はマルチスレッドについて読んで、通常の「関数をスレッドプールにプッシュし、それが終了するのを待つ」という本当に基本的なアプローチ以上のものを手に入れました。

基本的に、私はスレッドをより細かく制御したい、キャンセルトークンを渡す機能、戻り値を取得する機能などを必要としています。これはすべて、私が理解していることから、スレッドプール。

その場合、一般的なスレッドプールのスレッド数を制限すると、それがタスク スケジューラの実装に適用されますか?

また、独自のスレッドプールを使用する方がスレッドプールよりも優れていることも読みました。これら 2 つを混ぜ合わせて、必要な制御を取得できますか?

どんな提案も大歓迎です!もう少し説明してくれてありがとう。

4

1 に答える 1

5

同時実行を制限する TaskScheduler を作成できます。このカスタム スケジューラを使用して、独自の を作成TaskFactoryし、必要なコントロールでカスタマイズされたタスクを開始できます。

Parallel Extensions Samplesプロジェクトには、参照として使用できる多くのカスタム タスク スケジューラが含まれています。

また、独自のスレッドプールを使用する方がスレッドプールよりも優れていることも読みました。これら 2 つを混ぜ合わせて、必要な制御を取得できますか?

ほとんどの一般的な用途については、実際にはこれに同意しません。.NET ThreadPool は非常に効率的で、高度に最適化されています。使用されるスレッド数などを自動的にスケーリングするためのかなりの数のメトリックが含まれています。

そうは言っても、必要にTaskScheduler応じて、専用スレッドまたは独自の「スレッドプール」実装を使用する をいつでも作成できます。

于 2013-03-26T17:38:15.733 に答える