El término "verdadera concurrencia" surge en el estudio teórico de la computación concurrente y paralela. Está en contraste con la simultaneidad entrelazada. La verdadera concurrencia es la concurrencia que no puede reducirse a intercalación. La simultaneidad se intercala si en cada paso de la computación, solo puede tener lugar una acción de computación atómica (por ejemplo, un intercambio de mensajes entre el emisor y el receptor). La concurrencia es cierta si se produce más de una acción atómica en un paso.
La forma más sencilla de distinguir ambos es mirar la regla para la composición paralela. En una configuración basada en entrelazado, se vería así:
PAGS→ P′PAGSEl | Q→ P′El | Q
Esta regla exige que solo un proceso en una composición paralela pueda ejecutar una acción atómica. Para una verdadera concurrencia, una regla como la siguiente sería más apropiada.
PAGS→ P′Q → Q′PAGSEl | Q→ P′El | Q′
Esta regla permite a ambos participantes en una composición paralela ejecutar acciones atómicas.
¿Por qué estaría interesado en la concurrencia intercalada, cuando la teoría de la concurrencia es realmente el estudio de sistemas que ejecutan pasos de cálculo en paralelo? La respuesta es, y esa es una gran idea, que para las formas simples de concurrencia de mensajes, la concurrencia verdadera y la concurrencia basada en intercalación no son distinguibles contextualmente. En otras palabras, la concurrencia intercalada se comporta como la verdadera concurrencia hasta donde los observadores pueden ver. El intercalado es una buena descomposición de la verdadera concurrencia. Dado que el entrelazado es más fácil de manejar en las pruebas, las personas a menudo solo estudian la concurrencia basada en el entrelazado más simple (por ejemplo, CCS yπ-cálculos). Sin embargo, esta simplicidad desaparece para el cómputo concurrente con formas más ricas de observación (por ejemplo, cómputo temporizado): la diferencia entre la concurrencia verdadera y la concurrencia intercalada se vuelve observable.
Las equivalencias estándar, como las bisimulaciones y las trazas, tienen las mismas definiciones de concurrencia verdadera e intercalada. Pero pueden o no equiparar diferentes procesos, dependiendo del cálculo subyacente.
Permítanme dar una explicación informal de por qué el entrelazado y la interacción verdaderamente concurrente son indistinguibles en los cálculos de procesos simples. La configuración es un cálculo CCS o . Digamos que tenemos un programaπ
PAGS=X¯¯¯ El | y ¯¯¯ El | x. y . una¯¯¯ El | y . si¯¯
Luego tenemos la siguiente reducción verdaderamente concurrente:
Este paso de reducción puede coincidir con los siguientes pasos intercalados:
La única diferencia entre ambos es que el primero da un paso, mientras que los dos últimos. Pero los cálculos simples no pueden detectar la cantidad de pasos utilizados para alcanzar un proceso.
PAGS→y. una¯¯¯ El | si ¯¯
PAGS→→X¯¯¯ El | x. y . una¯¯¯ El | si ¯¯y. una¯¯¯ El | si ¯¯
Al mismo tiempo, tiene la siguiente segunda secuencia de reducción intercalada:
Pero esta también es una secuencia de reducción en un entorno verdaderamente concurrente, siempre que la verdadera concurrencia no sea forzada (es decir se permiten ejecuciones intercaladas incluso cuando existe la posibilidad de más de una interacción a la vez).PAGS
PAGS→→y¯¯¯ El | y . una¯¯¯ El | y . si¯¯una¯¯¯ El | y . si¯¯