Windows AzureのWorkerプロセスでTPLを使用したいです。私はIJobにキューを追加しているよ労働者が構成されますので、これは、Runメソッドを持っていますTPLの最大タスクは?
ループ が、これは非同期呼び出し
で、IJob.Runを呼び出すためにキュー 使用TPLを項目を降りますしかし、私はTPLに追加できる最大の項目について少し気にしていますか?必要に応じて独自のTPL Poolを構築して、その機能をチェックするだけで大丈夫です。
乾杯、 灰。
Windows AzureのWorkerプロセスでTPLを使用したいです。私はIJobにキューを追加しているよ労働者が構成されますので、これは、Runメソッドを持っていますTPLの最大タスクは?
ループ が、これは非同期呼び出し
で、IJob.Runを呼び出すためにキュー 使用TPLを項目を降りますしかし、私はTPLに追加できる最大の項目について少し気にしていますか?必要に応じて独自のTPL Poolを構築して、その機能をチェックするだけで大丈夫です。
乾杯、 灰。
TPLの主な目標の1つは、これを心配する必要をなくすことです。あなたの仕事をスレッドではなくタスクに分解することで、スケジューラがこれをより適切に調整できるようになります。
スケジュールできる「タスク」の数には上限がありません。 ThreadPoolを使用してスケジュールされたもの(デフォルトではTaskScheduler)は、.NET 4の場合、作業に基づいてスケーリングされます。自分のプールを構築しようとしないことを強くお勧めします。デフォルトよりもうまくいくことはまずありません。つまり、あなたのタスクに非常に非標準的な振る舞いがある場合は、カスタムTaskSchedulerの作成を検討することができます。
また、理想的には、あなたの仕事を「可能な限り大きく」する必要があることを認識してください。個々のタスクに関連するオーバーヘッドがあります。(作業の点で)小さすぎると、適切な数の大きな「タスク」を持つ場合よりもオーバーヘッドがパフォーマンスに大きな影響を与えます。
'Task'sが大きすぎると、他の' Task'sの処理が遅れる可能性があるため、問題になる可能性があります。だから、大きな 'Task'sでは、より良いスループットが得られるかもしれませんが、レイテンシは悪くなります。 – svick