Потоки. Синхронизация потоков. - 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);

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

Оцени полезность:

9   голосов , оценка 4 из 5
Похожие ответы