我寫了這個控制檯程序:如何同步多線程
static void Main(string[] args)
{
object sync = new object();
Thread[] t = new Thread[10];
int count = 0;
for (var i = 0; i < t.Length; i++)
{
t[i] = new Thread(() =>
{
lock (sync)
{
int inc = count;
Console.WriteLine("Count: {0}", count);
count = inc + 1;
}
});
}
foreach (var t1 in t)
{
t1.Start();
}
foreach (var t1 in t)
{
t1.Join();
Console.WriteLine("\nFinal Count= {0}", count);
Console.ReadKey();
}
}
我得到這樣的結果輸出:
Count: 0
Count: 1
Count: 2
Count: 3
Count: 4
Count: 5
Count: 6
Count: 7
Final Count= 7
Count: 8
Count: 9
,當我運行多個應用程序時,我得到更多的不同的結果 ,但我希望看到這樣的結果:
Count: 0
Count: 1
Count: 2
Count: 3
Count: 4
Count: 5
Count: 6
Count: 7
Count: 8
Count: 9
Final Count= 10
爲什麼它返回不同的resul我如何解決這個問題?
'數= INC + 1它們同步;'變得毫無意義。張貼實際的代碼。 –
「最終計數」是可以實現的,但如果你想要數字,那麼就不要使用線程。 –