Если я использую общую переменную, скажем, двойную, для вычисления какой-то суммы во время выполнения программы. Будет ли это в любом случае уязвимо для нестабильных операций? Я имею в виду, возможно ли, чтобы несколько ядер обращались к этой переменной асинхронно и вызывали нестабильные результаты?
Например: это глобальная переменная:
double totalTime = 0;
и в каждом ядре вызывается команда:
totalTime += elapsedTime;
Эта последняя операция/инструкция выполняется путем получения значения totalTime, помещения его в регистр ЦП, а затем выполнения сложения. Я могу представить, что несколько ядер будут принимать одно и то же значение в один и тот же момент, а затем добавлять новое значение elapsedTime, а затем значение, хранящееся в totalTime, будет перезаписано неправильным значением из-за задержки. Это возможно? и как я могу это решить?
Спасибо.