6

Windows AzureのWorkerプロセスでTPLを使用したいです。私はIJobにキューを追加しているよ労働者が構成されますので、これは、Runメソッドを持っていますTPLの最大タスクは?

ループ が、これは非同期呼び出し

で、IJob.Runを呼び出すためにキュー 使用TPLを項目を降ります

しかし、私はTPLに追加できる最大の項目について少し気にしていますか?必要に応じて独自のTPL Poolを構築して、その機能をチェックするだけで大​​丈夫です。

乾杯、 灰。

答えて

9

TPLの主な目標の1つは、これを心配する必要をなくすことです。あなたの仕事をスレッドではなくタスクに分解することで、スケジューラがこれをより適切に調整できるようになります。

スケジュールできる「タスク」の数には上限がありません。 ThreadPoolを使用してスケジュールされたもの(デフォルトではTaskScheduler)は、.NET 4の場合、作業に基づいてスケーリングされます。自分のプールを構築しようとしないことを強くお勧めします。デフォルトよりもうまくいくことはまずありません。つまり、あなたのタスクに非常に非標準的な振る舞いがある場合は、カスタムTaskSchedulerの作成を検討することができます。

また、理想的には、あなたの仕事を「可能な限り大きく」する必要があることを認識してください。個々のタスクに関連するオーバーヘッドがあります。(作業の点で)小さすぎると、適切な数の大きな「タスク」を持つ場合よりもオーバーヘッドがパフォーマンスに大きな影響を与えます。

+1

'Task'sが大きすぎると、他の' Task'sの処理が遅れる可能性があるため、問題になる可能性があります。だから、大きな 'Task'sでは、より良いスループットが得られるかもしれませんが、レイテンシは悪くなります。 – svick

関連する問題