2011-11-29 9 views
13

Concurrency Analyzerを見ると、Threadsビューは私のアプリケーションでは思ったよりはるかに多くのスレッドを生成します。これらのほとんどは「CLRワーカースレッド」または「ワーカースレッド」のいずれかです。CLRワーカースレッドとワーカースレッドの違いは何ですか?

違いは何ですか?どのような状況下で作成されますか?

Clip of Concurrency Analyzer, Threads view

答えて

7

同時実行ビジュアライザーはかなり新しいが、本当にクールです! - アプリケーションのメインスレッドによって作成されたスレッド(

  • ワーカースレッド:私はMSDNのような公式の情報源で見つけたものを以下のそれに関する情報のビットは、(私はまだ信じている)があるので、機能表中のメインスレッドエントリー)
  • CLRワーカースレッド - Common Language Runtime

便利なリンクによって作成されたワーカースレッド:

+0

は、どのような状況下ではCLRは、スレッドを作成していますか?これらは[ThreadPool](http://msdn.microsoft.com/en-us/library/system.threading.threadpool.aspx)によって作成されたスレッドですか? あなたの答えを考えれば、私はワーカースレッドの数だけも謎に包まれています。 – pomeroy

+0

アプリケーションコードを一切見ずに言うのは本当に難しいです。 CLRは、アプリケーションスレッドに関してガベージコレクションのためのCLRワーカースレッドを作成することができますが、これは推測にすぎませんが、アプリケーションがスレッドプールを使用していると仮定すると、十分に文書化された動作があります。 "アプリケーションがスレッドプールのタスクを、それを処理すると、スレッドプールは追加のスレッドを作成します。」「スレッドプールのクールな点は、ヒューリスティックであることです。アプリケーションで多くのタスクを実行する必要がある場合は、スレッドプールによってスレッドが増えます。あなたはタイムライングラフの上に紫色のである(メインスレッドを除く)唯一のアクティブなアプリケーションのスレッドを持っているスクリーンショット、THIは、I/O操作に関与し、それを意味します(ファイル/ネットワークストリーム、IOポート、またはそのように読んでいる)、すべてを見てみると – sll

+0

他のスレッドは同期のためにブロックされます。なぜあなたは多くのブロックされたワーカースレッドを持っているのか分かりません。いくつかの同期ループでスレッドを作成していますか? – sll

関連する問題