std::shared_lock<Mutex>::lock
From cppreference.com
< cpp | thread | shared lock
void lock(); |
(since C++14) | |
Locks the associated mutex in shared mode. Effectively calls mutex()->lock_shared().
Contents |
[edit] Parameters
(none)
[edit] Return value
(none)
[edit] Exceptions
- Any exceptions thrown by mutex()->lock_shared().
- If there is no associated mutex, std::system_error with an error code of std::errc::operation_not_permitted.
- If the associated mutex is already locked by this
shared_lock
(that is, owns_lock returns true), std::system_error with an error code of std::errc::resource_deadlock_would_occur.
[edit] Example
This section is incomplete Reason: show a meaningful use of shared_lock::lock |
Run this code
#include <iostream> #include <mutex> #include <shared_mutex> #include <string> #include <thread> std::string file = "Original content."; // Simulates a file std::mutex output_mutex; // mutex that protects output operations. std::shared_mutex file_mutex; // reader/writer mutex void read_content(int id) { std::string content; { std::shared_lock lock(file_mutex, std::defer_lock); // Do not lock it first. lock.lock(); // Lock it here. content = file; } std::lock_guard lock(output_mutex); std::cout << "Contents read by reader #" << id << ": " << content << '\n'; } void write_content() { {