static Thread _readThread = null;
static private Object thisLock = new Object();
static int a = 1;
private static void ReadComPort()
{
lock (thisLock)
{
for (int i = 0; i < 3; i++)
{
Console.WriteLine(Thread.CurrentThread.Name + " " + a++.ToString());
Thread.Sleep(1000);
}
}
}
static void Main(string[] args)
{
for (int i = 0; i < 3; i++)
{
_readThread = new Thread(new ThreadStart(ReadComPort));
_readThread.IsBackground = true;
_readThread.Name = i.ToString();
_readThread.Start();
//Thread.Sleep(50);
}
Console.WriteLine("End");
Console.ReadKey();
}
が、なぜあるの実行の順序で混沌としたスレッドの立ち上げ: 0,2,1なぜ?
コンソール出力:
0 1
End
0 2
0 3
2 4
2 5
2 6
1 7
1 8
1 9
*あなたは*と*なぜ*を期待していましたか?反復回数が少ないということは、スレッド間の相互作用*が起こりそうにないことを意味します。 –
スレッドが開始されたときに、すぐに実行されたり、他のスレッドと比較して起動される順序が保証されません –
'Task.ContinueWith'を使用してスレッドを実行し、queue/priorityを使用してConsoleへのアクセスを同期させ、 ..より多くのはずですが、確かにいくつかのスレッドを実行しておらず、あなたに指示していないときに自分自身を整理することを期待しています。 – Sinatr