The first time I realized that concurrency and relativity is related to each other was when reading the book SICP. It mentioned that
The basic phenomenon here is that synchronizing different processes, establishing shared state, or imposing an order on events requires communication among the processes. In essence, any notion of time in concurrency control must be intimately tied to communication. It is intriguing that a similar connection between time and communication also arises in the Theory of Relativity, where the speed of light (the fastest signal that can be used to synchronize events) is a fundamental constant relating time and space. The complexities we encounter in dealing with time and state in our computational models may in fact mirror a fundamental complexity of the physical universe.
For concurrency, the basic problem is synchronization, that is, we need to know which event happens first. If we can't get such a relationship, we say that the events happen concurrently.
Let's take amazon's dynamo as an example.
First, we execute put key1 value1
on server1. Before this update is synchronized to server2, we execute put key1 value2
on server2. After the above two operations, we need to achieve eventual consistency by synchronizing the value associated with key1
. Since we don't have a causal relationship between the two update operations, we have no idea which value is the final value for key1
.
You can think of this as space-like events in relativity theory.
The spacetime intervals is defined as:
$$
s^{2} = \Delta r^{2} - c^{2} \Delta t^{2}.
$$
where $c$ is speed of light.
Space-like events have a positive spacetime interval, that is
c^{2} \Delta t^{2} < \Delta r^{2} \\ s^{2} > 0
The above equation means, for space-like events, it's impossible to get a causal relationship by crossing the spatial distance at the speed of light.
For example, given a reference frame, Jack rolled a dice at coordinate $(x_1,x_2,x_3,t_1)$ while Sam rolled a dice at coordinate $(y_1,y_2,y_3,t_2)$. Then
\Delta t^{2} = (t_2-t_1)^2 \\
\Delta r^{2} = \sum_{i=1}^{3} (x_i - y_i) ^2
Jack and Sam agreed that when rolling the dice, they would also send a message to each other at the same time. If someone received the message before rolling the dice, he would know the other people rolled the dice first.
If $c \Delta t^2 < \Delta r^2 $, then even if Jack and Sam could communicate with each other at speed of light, they couldn't get a causal relationship for the events since both of them would receive the message after rolling the dice.