Sobes.tech
Middle+

Wat is sequentiële consistentie?

sobes.tech AI

Antwoord van AI

Sequentiële consistentie (Sequential Consistency) is een model van consistentie in gedistribueerde systemen of multithreaded programma's, dat garandeert dat het resultaat van het uitvoeren van elk parallel programma zo zal zijn alsof alle operaties van alle processors (threads) in een bepaalde sequentiële volgorde zijn uitgevoerd, en dat de operaties van elke processor (thread) in die sequentiële volgorde volgen in de volgorde waarin ze in het programma zijn gespecificeerd.

Met andere woorden:

  1. Het behouden van de volgorde van operaties binnen een thread: Operaties die door één thread worden geïnitieerd, zijn zichtbaar voor andere threads in dezelfde volgorde waarin ze door die thread zijn uitgevoerd.
  2. Een enkele, globale volgorde: Er bestaat één lineaire, globale, unieke volgorde van uitvoering van alle operaties van alle threads, die door alle threads wordt gerespecteerd.

Dit model is een van de sterkste en meest intuïtieve, maar de implementatie ervan kan kostbaar zijn qua prestaties vanwege de noodzaak van synchronisatie en het voorkomen van herschikking van operaties door de compiler en hardware.

Voorbeeld:

// Thread 1
x = 1;
y = 2;

// Thread 2
// Leesoperaties voor x en y

Met sequentiële consistentie, als Thread 1 eerst 1 in x schrijft en vervolgens 2 in y, dan zal Thread 2 nooit y als 2 zien voordat het x als 1 ziet. Mogelijke sequentiële uitvoeringen:

  • 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) kan 0 zijn, read(y) kan 0 zijn, daarna read(x) = 1, read(y) = 2)

Het is niet mogelijk dat Thread 2 y als 2 ziet, maar x nog 0, als Thread 1 eerst x = 1 schrijft en daarna y = 2.