Доброго времени суток!
Изучая методичку по основам операционных систем, наткнулся на проблему, которая возникает при использовании операторов lock; monitor.enter()..., ; и т.п.
Конкретнее
Долго копался в поисках ответа ( сам новичок и додумать эту проблему не хватает опыта )
Код прикладываю...
sourceclass Program
{
static int Runs = 0;
static object block = new object();
static void Main()
{
Thread t2 = new Thread(new ThreadStart(Method))
{
Name = "Thread 2"
};
Thread t3 = new Thread(new ThreadStart(Method))
{
Name = "Thread 3"
};
t2.Start();
t3.Start();
Console.ReadLine();
}
public static void Method()
{
try
{
Monitor.Enter(block);
int Temp = Runs;
Temp++;
Console.WriteLine(Thread.CurrentThread.Name + " {0}", Temp);
Thread.Sleep(1000);
Runs = Temp;
}
finally
{
Monitor.Exit(block);
}
}
}