I am reading Java Concurrency in Practice
I am confused with the specific explanation regarding happens-before relationship.
It states that,
operations are ordered by a partial ordering called happens-before
What exactly does this mean by "partial ordering"?
(There is an explanation in the book but its not clear to me )
Partial Ordering means that not every pair of operations has the relation happens-before
.
Actually, the fact that not every pair of operations has that relation enables you to perform operations concurrently.
For example, suppose you have operations A, B, C & D.
We can define a partial ordering: A must happen before B and C
.
Then A and B have the happens-before
relation, as do A and C.
However, A and D don't have that relation, so D can be executed either before A, after A or while A is being executed.
If, on the other hand, happens-before
was a full ordering, such as A happens-before B happens-before C happens-before D
(note that in this case, for each pair of operations you know which one happens-before the other, hence it is a full ordering), then the execution of the operations would have to be serial, and no concurrency would be possible.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With