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

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

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

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

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

++j

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

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

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

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

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


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

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

11   голосов , оценка 4.273 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы