Lock
A lock is a synchronization variable that provides mutual exclusion; a thread will be guaranteed to proceed.
There are two states: locked
and free
For example, a lock can stop an interrupt from preemptively ([[preemption]]) stopping a thread.