A synchronization mechanism for
providing atomic operation by limiting
concurrent access to a resource.
Important operations on locks include
acquire (lock) and release (unlock).
Many locks are implemented as a mutex,
whereby only one strand can hold the
lock at any time.