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