Я могу придумать несколько возможных значений для «повторного чтения». Вот наиболее вероятный; в многопоточной среде многое может произойти между вашим потоком, считывающим значение из памяти и записывающим измененное значение обратно в эту память. Простой, но эффективный способ обнаружения изменений - просто снова получить значение из памяти непосредственно перед записью, и если оно изменилось по сравнению со значением, с которого вы начали, вы знаете, что кто-то другой изменил его во время работы.
«Чтение» также может означать «повторяемые операции чтения», в которых используется механизм блокировки, чтобы гарантировать, что в рамках атомарного набора операций только поток, получивший блокировку ресурса, может читать ИЛИ записывать в это, гарантируя, что никакой другой поток не может изменить значение по сравнению с тем, что ожидалось бы для задачи, если бы он выполнялся однопоточным. Таким образом, поток не должен обнаруживать внешние изменения; механизм блокировки предотвращает подобные вещи.