Последовательная согласованность (Sequential Consistency) — это модель согласованности в распределенных системах или многопоточных программах, гарантирующая, что результат выполнения любой параллельной программы будет таким, как если бы все операции всех процессоров (потоков) были выполнены в некотором последовательном порядке, и операции каждого отдельного процессора (потока) в этом последовательном порядке следовали в том порядке, в котором они были заданы в программе.
Иными словами:
Эта модель является одной из самых сильных и интуитивно понятных, но ее реализация может быть дорогостоящей с точки зрения производительности из-за необходимости синхронизации и предотвращения переупорядочивания операций компилятором и железом.
Пример:
java
При последовательной согласованности, если Поток 1 сначала записывает 1 в x, а затем 2 в y, то Поток 2 никогда не "увидит" y равным 2 до того, как увидит x равным 1. Возможные последовательные исполнения:
x = 1; y = 2; read(x); read(y); (read(x) = 1, read(y) = 2)x = 1; read(x); y = 2; read(y); (read(x) = 1, read(y) = 2)read(x); x = 1; read(y); y = 2; (read(x) может быть 0, read(y) может быть 0, затем read(x) = 1, read(y) = 2)Невозможен сценарий, когда Поток 2 видит y = 2, но при этом x все еще равно 0, если Поток 1 сначала записывает x = 1, а потом y = 2.