Source: https://www.cs.rochester.edu/u/scott/papers/1998_JPDC_nonblocking.pdf