I'm trying to understand why this code is not working.
private static object _lock;
public static void Main (string[] args)
{
Thread thread;
_lock = new object();
foreach (int num in Enumerable.Range(0,5)) {
thread = new Thread (() => print(num.ToString()));
thread.Start();
}
}
public static void print(string text)
{
lock(_lock)
{
Console.WriteLine(text);
}
}
I end up with an output of
4
1
4
4
3
or any other random number of digits. Why does it repeat digits?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…