std::mutex
cppreference.com
<tbody>
</tbody>
class mutex; |
( C++11) | |
mutex , .
mutex , :
, mutex , - , , mutex. mutex Mutex StandardLayoutType.
mutex .
-
| - | |
native_handle_type ( )
|
|
-
| (public -) | |
| (public -) | |
operator= [] |
(public -) |
| , , (public -) | |
| , , (public -) | |
| (public -) | |
| -, (public -) | |
std::mutex : std::unique_lock, std::lock_guard std::scoped_lock ( C++17) .
, mutex std::map, .
#include <iostream>
#include <map>
#include <string>
#include <chrono>
#include <thread>
#include <mutex>
std::map<std::string, std::string> g_pages;
std::mutex g_pages_mutex;
void save_page(const std::string &url)
{
//
std::this_thread::sleep_for(std::chrono::seconds(2));
std::string result = " ";
std::lock_guard<std::mutex> guard(g_pages_mutex);
g_pages[url] = result;
}
int main()
{
std::thread t1(save_page, "http://foo");
std::thread t2(save_page, "http://bar");
t1.join();
t2.join();
// g_pages ,
for (const auto &pair : g_pages) {
std::cout << pair.first << " => " << pair.second << '\n';
}
}
:
http://bar =>
http://foo =>
(C++11) |
, () |
(C++11) |
( ) |
(C++11) |
( ) |
(C++17) |
RAII ( ) |
(C++11) |
, std::unique_lock () |