さまざまなスレッドを生成し、それらすべてに同じメソッドを使用するように指示した場合:
internal class Program {
private static DoSomething() {
int result = 0;
Thread.Sleep(1000);
result++;
int ID = Thread.CurrentThread.ManagedThreadId;
Console.WriteLine("Thread {0} return {1}", ID, result);
}
private static Main() {
Thread[] threads = new Thread[50];
for (int i = 0; i < 50; i++)
threads[i] = new Thread(DoSomething);
foreach (Thread t in threads)
t.Start();
}
}
すべてのスレッドは同じスタックを共有しますか?プログラムを実行すると、すべてのスレッドが1を返すので、答えはノーだと思いますが、それはCLRがメモリ内にメソッドの異なるコピーを作成することを意味しますか?