Serialization occurs when a mutex makes threads take turns accessing protected data instead of accessing it concurrently. A smaller protected region means fewer operations are serialized, leaving more opportunity for true concurrency. section 6.1
When designing a data structure, consider how to reduce serialization:
- Restrict lock scope so parts of an operation can run outside the lock, or protect different parts of the structure with different mutexes. section 6.1.1
- Ask whether operations need the same level of protection. For example, multiple readers may access a structure concurrently while a modifying thread requires exclusive access; std::shared_mutex can support this distinction. section 6.1.1
- Preserve operational semantics while looking for changes that enable more concurrent access. Some designs allow different operations to run concurrently while serializing threads performing the same operation. section 6.1.1

