Rule 13 ; CP 21
- Mutexes locked with std::lock or std::try_lock shall be wrapped with std::lock_guard, std::unique_lock or std::shared_lock with adopt_lock tag within the same scope
Rule 39 ; CP 110
- Use std::call_once to ensure a function is called exactly once (rather than the Double-Checked Locking pattern)
Rule 19 ;
- There shall be no code path which results in locking of the non-recursive mutex within the scope when this mutex is already locked
Rule 8 ;
- Verify resource management assumptions of std::thread with the implementation of standard library of choice