В информатике чтение-изменение-запись — это класс атомарных операций (таких как проверка-и-установка , выборка-и-добавление и сравнение-и-обмен ), которые одновременно считывают ячейку памяти и записывают в нее новое значение , либо совершенно новое значение, либо некоторую функцию предыдущего значения. Эти операции предотвращают состояние гонки в многопоточных приложениях. Обычно они используются для реализации мьютексов или семафоров . Эти атомарные операции также активно используются в неблокируемой синхронизации .
Морис Херлихи (1991) ранжирует атомарные операции по их консенсусным числам следующим образом:
Невозможно реализовать операцию, требующую заданного числа консенсуса, только с операциями с меньшим числом консенсуса, независимо от того, сколько таких операций используется. [2] Инструкции чтения-изменения-записи часто приводят к неожиданным результатам при использовании на устройствах ввода-вывода , поскольку операция записи может не затрагивать тот же внутренний регистр , к которому будет осуществляться доступ при операции чтения. [3]
Этот термин также связан с уровнями RAID , которые выполняют реальные операции записи как атомарные последовательности чтения-изменения-записи. [4] Такие уровни RAID включают RAID 4 , RAID 5 и RAID 6 .