is similar to mutex, except that they allow for higher degrees of parallelism. with a mutex, the state is either locked or unlocked, and only one thread can lock it at a time. three states are possible with this lock: locked in read mode, locked in write mode, and unlocked.