6

Visual Studioの同時実行ビジュアライザーツールを使用して、作業中のWPFプロジェクトのスレッド化を理解しています。アプリケーションはそれほどマルチスレッドではありません。すべてのマルチスレッドは、UIスレッドのブロックを回避するためだけのものです。Concurrency Visualizerを実行したとき、約50以上のスレッドを見て非常に驚きました。物事をより混乱させるために、それらの50以上のスレッドのほとんどすべてが、私が理解している限り「ブロック」されている「同期」に全時間を費やしました。

実験として、新しい空のWPFアプリケーションプロジェクトを作成し、Concurrency Visualizerを使用して実行しました。驚いたことに、メインスレッドが1つで、ガベージコレクションやその他のCLR用にさらに1つまたは2つあると予想されていました。 、10個のスレッドがあることがわかりました!

単純なWPFアプリケーションで10個のスレッドを示す同時実行ビジュアライザーのスクリーンショット

だから私の質問は:

  1. 非常に単純なアプリケーションに非常に多くのスレッドがあるのはなぜですか?
  2. 一般的に言えば、これらのスレッドの機能は何ですか?
  3. なぜ彼らはほとんどすべての時間を「同期」に費やしているのですか?
  4. このトピックをカバーする本/ウェブサイトに関する推奨事項はありますか?
4

1 に答える 1