It is better to use std::shared_mutex than std::shared_timed_mutex.
The performance difference is more than double.
If you want to use RWLock, you will find that there are two options.
It is std::shared_mutex and shared_timed_mutex.
you may think std::shared_timed_mutex is just the version 's...