The happened-before relationship is important in figuring out partial ordering of events and in producing a logical clock for asynchronous distributed systems. It was formulated by Leslie Lamport.
In order to figure out the relative time between two events occurring in a distributed system without a global clock, we use the happened-before (->) relationship defined as follows:
- On the same process, a -> b if time of a < time of b (the time is given by the local clock).
- If a process sends a message to another process, then a -> b if a is the send and b is the receive.
- For three events a, b, c, if a -> b and b -> c, then a -> c.
In order to formulate total ordering of events, an algorithm such as vector ordering must be used.
The happened-before relationship is used in timestamping messages (Lamport Timestamps) and in building logical clocks (Lamport Clocks).