Потоки. Синхронизация потоков. - C#
Формулировка задачи:
Нужно синхронизировать действия потоков, например в доступе к переменной "а".
Где ставить локеры: в потоках, где мы будем изменять "а"
или в главном потоке, где хранится "а". Два фоновых потока должны получить одну и ту же "а"?
Thread1^
lock (locker)
{
a = a++;
}
Thread2^
lock (locker)
{
a = a--;
}main^
lock (locker)
{
a=5;
}
Thread t1 = new Thread(threadStart1);
Thread t2 = new Thread(threadStart2);Решение задачи: «Потоки. Синхронизация потоков.»
textual
Листинг программы
public void DoWork(object flag)
{
lock(locker)
{
if ((bool)flag) a++;
else a--;
}
}
//создаем потоки и запускаем
Thread first = new Thread(new ParameterizedThreadStart(DoWork));
Thread second = new Thread(new ParameterizedThreadStart(DoWork));
first.Start(true);
second.Start(false);