Skip to content

shilangyu/register-transformations

Repository files navigation

Register transformations

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.

Showcase of the site

What is a wait-free register?

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:

  1. Value: binary (can represent two state), multivalue (can represent many values)
  2. Interface: SRSW (single reader, single writer), MRSW (multiple reader, single writer), MRMW (multiple reader, multiple writer)
  3. 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.