// что должно побудить компилятор на каждой итерации сохранять progress в памяти?
Хотя бы то что переменная внешняя. И если someOperation приличная ф-ция то не будет он тратить драгоценный регистр на несчастный progress.
Все-таки как охотно мы обсуждаем легкие вопросы
Предлагаю чуть усложниться, а то так неинтересно. Пусть у нас контейнер вместо переменной,
C++ (Qt)
std::vector vec;
// 1-я нитка
if (!vec.size()) ...
// 2-я нитка
vec.push_back(..)
Здесь уже атомарно не выкрутиться, надо защищаться. Но мутекс неприемлемо дорог по сравнению с push_back (которое в большинстве случаев память не перераспределяет), а о size() неудобно и говорить.
Что бум делать?