# Reader Writer Mutexes

Mutual exclusion is necessary when at least one thread writes to a shared variable. But it does no harm to permit multiple readers into a protected region. The reader-writer variants of the mutexes, denoted by `_rw_` in the class names, enable multiple readers by distinguishing reader locks from writer locks. There can be more than one reader lock on a given mutex.

Requests for a reader lock are distinguished from requests for a writer lock via an extra boolean parameter in the constructor for `scoped_lock`. The parameter is false to request a reader lock and true to request a writer lock. It defaults to `true` so that when omitted, a `spin_rw_mutex` or `queuing_rw_mutex` behaves like its non-`_rw_` counterpart.

Parent topic: Mutual Exclusion

## See Also

Upgrade/Downgrade example where the parameter is explicitly false in order to obtain a reader lock.