Многопоточность - синхронизация - lock - C#
Формулировка задачи:
Изучаю многопоточность, дошел до синхронизация и не могу понять как использовать
смысл программы, класс, в нем всего один метод (
lock
, вот делаю программу для тестаlock
:using System;
using System.Threading;
class testClass
{
public int I;
public string STR;
private object lockON = new object();
public void Fun()
{
Console.WriteLine();
lock (lockON)
{
for (; I < 100; I++ )
Console.WriteLine("{1} = {0}", I, STR);
}
}
public testClass(string rhs) { STR = rhs; I = 0; }
}
class ClassToTestCSHARP { static void Main() {
testClass ob1 = new testClass("ONE");
testClass ob2 = new testClass("TWO");
Thread ff = new Thread(ob1.Fun);
Thread sf = new Thread(ob2.Fun);
ff.Start();
sf.Start();
Console.ReadKey(); } }Fun
), который запускает счетчик и выводит значения, вMain
я создаю два объекта этого класса, создаю потоки, и запускаю эти потоки, по моему разумению, как только первый запущенный поток дойдет до до этого метода, в частности до ключевого словаlock
, второй поток будет заблокирован, т.е. в итоге сначала один поток (ONE
) выведет все свои значения, потом следующий (TWO
), но так не происходит, все выводится вперемешку. В чем косяк, где и что я не правильно понял?Решение задачи: «Многопоточность - синхронизация - lock»
textual
Листинг программы
testClass ob1 = new testClass("ONE");
Thread ff = new Thread(ob1.Fun);
Thread sf = new Thread(ob1.Fun);
ff.Start();
sf.Start();