2016-07-24 7 views
2

私はスレッドについて学んでいます。 .NET Framework 4.5.2とWindows 10 x64でC#を使用しています。"Resource Monitor"は私のプログラムで書いた2つのスレッドより多くのスレッドを表示します

私は、一つ一つに2つのスレッドと一つの大きなループを備えた簡単なプログラムを書いた:

class Program 
{ 
    static void Main(string[] args) 
    { 
     Thread t = new Thread(foo); 
     t.Start(); 
     for (int i = 0; i < 99999999; i++) 
     { 
      Console.WriteLine("x"); 
     } 

    } 

    static void foo() 
    { 
     for (int i = 0; i < 99999999; i++) 
     { 
      Console.WriteLine("y"); 
     } 
    } 
} 

を私は「リソースモニター」でのプログラムの最終リリースを実行したときに私はそれがより多くを実行している読んで2つのスレッド。

私は、アプリケーションの実行方法を実際に制御することはできません。「Yと同時にXを実行したい」と言うことができますが、厳密な)作成されるスレッドの数の制御。あれは正しいですか?

この動作の説明を知りたいと思います。ここで

私が説明した内容の画像: threads

+0

デバッガを使い、スレッドウィンドウを調べるのはどうですか? –

答えて

3

を使用すると、デバッガをアタッチせずに、任意の追加のスレッドを作成せずにアプリケーションを実行するときには、少なくとも3つのスレッドを持っています。

ガーベッジコレクタは別のスレッドで動作することに注意してください。また、ファイナライザは別のスレッドで動作します。このスレッドでは、メインスレッドは簡単です。

さらに多くのスレッドが表示されたら、Visual Studioを使用してデバッグするときに、デバッグ関連のスレッドが実行されていることに注意する必要があります。それをテストする

、以下のような簡単なプログラムを作成します。

class Program 
{ 
    static void Main(string[] args) 
    { 
     Console.ReadKey(); 
    } 
} 

(付属のVisual Studioデバッガがなければ)、あなたは正確に3スレッド中を見ることが、あなたのアプリケーションをビルドし、実行可能ファイルを使用して、それを実行しますリソースモニター

関連する問題