Одновременный инкремент в многопоточной программе - C#

Узнай цену своей работы

Формулировка задачи:

Подпрограмма выполняется в многопоточном режиме. i, j - глобальные переменные. Каждый поток инкриминирует j и получает уникальный i. И все работает. Пока... Однако у меня возник вопрос...

Что если два потока (теоретически) выполнят команду

++j

одновременно?

Какое значение примет переменная j в таком случае? Ведь в обоих потоках начальное значение j будет одинаковым. Предположим, что в каждом потоке j = 5, тогда 5+1 выполнится два раза. И что будет на выходе j = 6 или j = 7?
private void run()
        {
            int c = 100;
            while (j < c)
            {
                i = (++j);
                c++;
            }
        }
    }

Решение задачи: «Одновременный инкремент в многопоточной программе»

textual
Листинг программы
                //mCounter++;
                Interlocked.Increment(ref mCounter);

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


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

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

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