O termo "simultaneidade verdadeira" surge no estudo teórico da computação simultânea e paralela. Está em contraste com a intercalação de simultaneidade. A simultaneidade verdadeira é uma simultaneidade que não pode ser reduzida a intercalação. A simultaneidade é intercalada se, em cada etapa da computação, apenas uma ação de computação atômica (por exemplo, uma troca de mensagens entre remetente e destinatário) puder ocorrer. A simultaneidade é verdadeira se mais de uma ação atômica ocorrer em uma etapa.
A maneira mais simples de distinguir os dois é olhar para a regra da composição paralela. Em uma configuração baseada em intercalação, seria algo parecido com isto:
P→P′P|Q→P′|Q
Esta regra impõe que apenas um processo em uma composição paralela possa executar uma ação atômica. Para simultaneidade verdadeira, uma regra como a seguinte seria mais apropriada.
P→P′Q→Q′P|Q→P′|Q′
Essa regra permite que ambos os participantes de uma composição paralela executem ações atômicas.
Por que alguém estaria interessado em concorrência intercalada, quando a teoria de concorrência é realmente o estudo de sistemas que executam etapas de computação em paralelo? A resposta é, e esse é um ótimo insight, que para formas simples de simultaneidade de transmissão de mensagens, a simultaneidade verdadeira e a simultaneidade baseada na intercalação não são contextualmente distinguíveis. Em outras palavras, a simultaneidade intercalada se comporta como uma verdadeira simultaneidade, tanto quanto os observadores podem ver. A intercalação é uma boa decomposição da verdadeira simultaneidade. Como a intercalação é mais fácil de lidar nas provas, as pessoas geralmente estudam apenas a concorrência mais simples baseada na intercalação (por exemplo, CCS eπ-calculi). No entanto, essa simplicidade desaparece para a computação simultânea com formas mais ricas de observação (por exemplo, computação temporizada): a diferença entre simultânea verdadeira e simultânea intercalada se torna observável.
Equivalências padrão como bisimulações e traços têm as mesmas definições para simultaneidade verdadeira e intercalada. Mas eles podem ou não igualar processos diferentes, dependendo do cálculo subjacente.
Deixe-me dar uma explicação informal de por que intercalação e interação verdadeiramente simultânea são indistinguíveis em cálculos de processos simples. A configuração é um cálculo tipo CCS ou . Digamos que temos um programaπ
P
P=x¯¯¯ | y¯¯¯ | x.y.a¯¯¯ | y.b¯¯
Em seguida, temos a seguinte redução verdadeiramente simultânea:
Essa etapa de redução pode ser correspondida pelas seguintes etapas intercaladas:
A única diferença entre os dois é que o primeiro dá um passo, enquanto o segundo dois. Porém, cálculos simples não podem detectar o número de etapas usadas para alcançar um processo.
PP→y.a¯¯¯ | b¯¯
P→→x¯¯¯ | x.y.a¯¯¯ | b¯¯y.a¯¯¯ | b¯¯
Ao mesmo tempo, possui a segunda segunda sequência de redução intercalada:
Mas essa também é uma sequência de redução em uma configuração verdadeiramente simultânea, desde que a verdadeira concorrência não seja forçada (por exemplo, execuções intercaladas são permitidas mesmo quando há potencial para mais de uma interação por vez).PP
P→→y¯¯¯ | y.a¯¯¯ | y.b¯¯a¯¯¯ | y.b¯¯