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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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