Visual Studioの同時実行ビジュアライザーツールを使用して、作業中のWPFプロジェクトのスレッド化を理解しています。アプリケーションはそれほどマルチスレッドではありません。すべてのマルチスレッドは、UIスレッドのブロックを回避するためだけのものです。Concurrency Visualizerを実行したとき、約50以上のスレッドを見て非常に驚きました。物事をより混乱させるために、それらの50以上のスレッドのほとんどすべてが、私が理解している限り「ブロック」されている「同期」に全時間を費やしました。
実験として、新しい空のWPFアプリケーションプロジェクトを作成し、Concurrency Visualizerを使用して実行しました。驚いたことに、メインスレッドが1つで、ガベージコレクションやその他のCLR用にさらに1つまたは2つあると予想されていました。 、10個のスレッドがあることがわかりました!
だから私の質問は:
- 非常に単純なアプリケーションに非常に多くのスレッドがあるのはなぜですか?
- 一般的に言えば、これらのスレッドの機能は何ですか?
- なぜ彼らはほとんどすべての時間を「同期」に費やしているのですか?
- このトピックをカバーする本/ウェブサイトに関する推奨事項はありますか?