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();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д