我写了这个控制台程序:如何同步多线程
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它们同步;'变得毫无意义。张贴实际的代码。 –
“最终计数”是可以实现的,但如果你想要数字,那么就不要使用线程。 –