shared_mutex
class ReaderWriterLock {
std::shared_mutex mutex;
int readers; // Number of concurrent readers
public:
void read() {
mutex.lock_shared();
++readers;
mutex.unlock_shared();
}
void write() {
mutex.lock();
while (readers > 0) {
mutex.unlock();
std::this_thread::yield();
mutex.lock();
}
// Enter critical section
...
// Exit critical section
mutex.unlock();
}
};