一貫性のない出力を生成する以下のコードがあります。
string text = "t1";
new Thread ( () => Console.WriteLine (text) ).Start();
//Thread.Sleep(1);
text = "t2";
new Thread ( () => Console.WriteLine (text) ).Start();
t1とt2を生成する場合もあれば、2倍のt2を生成する場合もあります。私が今考えているのはそれです。出力がdoublet2の場合、最初のスレッドでキャプチャされた変数値はt2です。これは、最後の変数割り当ての後に開始されたためです。私は正しいですか?
注:このコードは低速のマシンで実行しています。