Вы правы, что вам не нужна специальная инструкция для атомарного чтения 32-битного целого числа, однако это означает, что вы получите «целое» значение (т.е. вы не получите часть одной записии часть другого ).У вас нет никаких гарантий, что значение не изменится после прочтения.
Именно в этот момент вам нужно решить, нужно ли вам использовать какой-либо другой метод синхронизации для управления доступом, например, если вывы используете это значение для чтения члена из массива и т. д.
В двух словах, атомарность обеспечивает выполнение операции полностью и неделимо.Учитывая некоторую операцию A
, которая содержала N
шагов, если вы сделали это в операции сразу после A
, вы можете быть уверены, что все N
шаги произошли в изоляции от одновременных операций.
Если выбыло два потока, которые выполнили атомарную операцию A
, вы гарантированно увидите только результат complete для одного из двух потоков .Если вы хотите координировать потоки, атомарные операции могут быть использованы для создания необходимой синхронизации.Но атомарные операции сами по себе не обеспечивают синхронизацию более высокого уровня.Семейство методов Interlocked
стало доступным для обеспечения некоторых фундаментальных атомарных операций.
Синхронизация - это более широкий вид управления параллелизмом, часто основанный на атомарных операциях.Большинство процессоров имеют барьеры памяти, которые позволяют вам гарантировать, что все строки кэша сброшены, и у вас есть последовательное представление памяти.Энергозависимое чтение - это способ обеспечить постоянный доступ к определенной области памяти.
Хотя это не относится к вашей проблеме сразу, чтение ACID (атомарность, согласованность, изоляция и долговечность) в отношении баз данных может помочь вамс терминологией.