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?