In terms of speed, RecMutex,
Monitor<Mutex>, and
Monitor<RecMutex> perform within a few percentage points of
Mutex for a critical region that is not under contention. However, locking and unlocking a
RWRecMutex is 3–40 times slower than locking and unlocking a
Mutex, depending on the operating system, compiler, and CPU architecture. If lock performance is important to your application, we suggest you take your own measurements to assess the relative performance of the different synchronization primitives.