Одновременный инкремент в многопоточной программе - 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);