Showcases the transformations needed to go from one wait-free register to a different one. Configure the base registers and the target output register to see the needed transformation. See website here.
A register is a shared-object with two atomic operations: read and write. It is shared across many threads. A wait-free operation is an operation such that when invoked we have a guarantee that it will eventually be completed.
A register can come in many flavors, but here we consider those that have three characteristics:
- Value: binary (can represent two state), multivalue (can represent many values)
- Interface: SRSW (single reader, single writer), MRSW (multiple reader, single writer), MRMW (multiple reader, multiple writer)
- Type: safe (a read that is concurrent with a write can return anything), regular (a read that is concurrent with a write can return the value being written or the previously written value), atomic (all operations appear to be executed instantaneously)
This website shows how to construct a stronger register using weaker ones.