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