Lock не работает (многопоточность) - C#
Формулировка задачи:
Здравствуйте. Есть такой код.
на выходе он выдает это (пикчу прикрепил)
Хотя, насколько я понимаю, он должен выдавать
"Выполнение потока Поток номер 1 номер 0
Выполнение потока Поток номер 1 номер 1
...
Выполнение потока Поток номер 1 номер 9
и так же со вторым потоком.
В общем вопрос - что в моем коде не так, почему потоки так же работают "вместе", а не "по очереди"?
namespace mysync
{
class Program
{
static void Main(string[] args)
{
M m1 = new M("Поток номер 1");
M m2 = new M("Поток номер 2");
Console.ReadKey();
}
}
class M
{
public Thread t;
string Name;
Test test = new Test();
public M(string Name)
{
this.Name = Name;
t = new Thread(Run);
t.Start();
}
object ob = new object();
void Run()
{
lock (ob)
{
test.Method(this.Name);
}
}
}
class Test
{
private object ob = new object();
public void Method(object Name)
{
lock (ob)
{
Console.WriteLine("Выполнения метода в классе Test методом " + Name);
for (int i = 0; i < 10; i++)
{
Thread.Sleep(500);
Console.WriteLine("Выполнение потока " + Name + " номер " + i);
}
Console.WriteLine("Поток " + Name+ " завершен");
}
}
}
}Решение задачи: «Lock не работает (многопоточность)»
textual
Листинг программы
private static object ob = new object();