Sobes.tech
Middle+

O que é consistência sequencial?

sobes.tech IA

Resposta da IA

A consistência sequencial (Sequential Consistency) é um modelo de consistência em sistemas distribuídos ou programas multithread, que garante que o resultado de executar qualquer programa paralelo será como se todas as operações de todos os processadores (threads) fossem realizadas numa ordem sequencial, e as operações de cada processador (thread) nessa ordem sequencial seguissem na ordem em que foram especificadas no programa.

Em outras palavras:

  1. Manter a ordem das operações dentro de um thread: As operações iniciadas por um thread são visíveis para outros threads na mesma ordem em que foram realizadas por esse thread.
  2. Uma ordem global única: Existe uma ordem linear, global, única, na execução de todas as operações de todos os threads, que todos respeitam.

Este modelo é um dos mais fortes e intuitivos, mas sua implementação pode ser custosa em termos de desempenho devido à necessidade de sincronização e de prevenir a reordenação de operações pelo compilador e hardware.

Exemplo:

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

// Thread 2
// Operações de leitura de x e y

Com consistência sequencial, se a Thread 1 primeiro escreve 1 em x, e depois 2 em y, então a Thread 2 nunca "verá" y igual a 2 antes de ver x igual a 1. As execuções sequenciais possíveis:

  • 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) pode ser 0, read(y) pode ser 0, depois read(x) = 1, read(y) = 2)

Não é possível que a Thread 2 veja y = 2, mas x ainda seja 0, se a Thread 1 primeiro escreve x = 1, e depois y = 2.