Spójność sekwencyjna
Spójność sekwencyjna to model spójności stosowany w dziedzinie obliczeń współbieżnych (np. w rozproszonej pamięci współdzielonej , transakcjach rozproszonych itp.).
Jest to właściwość, że „… wynik dowolnego wykonania jest taki sam, jak gdyby operacje wszystkich procesorów były wykonywane w pewnej kolejności, a operacje każdego pojedynczego procesora pojawiają się w tej kolejności w kolejności określonej przez jego program ”.
Oznacza to, że kolejność wykonywania programu w tym samym procesorze (lub wątku) jest taka sama jak kolejność programu, podczas gdy kolejność wykonywania programu na różnych procesorach (lub wątkach) jest niezdefiniowana. W takim przykładzie:
zachowana jest kolejność wykonywania między A1, B1 i C1, to znaczy A1 działa przed B1, a B1 przed C1. To samo dla A2 i B2. Ale ponieważ kolejność wykonywania między procesorami jest niezdefiniowana, B2 może działać przed lub po C1 (B2 może fizycznie działać przed C1, ale efekt B2 może być widoczny po C1, co jest tym samym, co „Uruchom B2 po C1”)
Koncepcyjnie istnieje pojedyncza pamięć globalna i „przełącznik”, który łączy dowolny procesor z pamięcią w dowolnym momencie. Każdy procesor wykonuje operacje pamięciowe w kolejności programowej , a przełącznik zapewnia globalną serializację wszystkich operacji pamięciowych
Spójność sekwencyjna jest słabsza niż spójność ścisła , która wymaga odczytu z lokalizacji w celu zwrócenia wartości ostatniego zapisu do tej lokalizacji; ścisła spójność wymaga, aby operacje były postrzegane w kolejności, w jakiej zostały faktycznie wydane.