std::mutex

来自cppreference.com
< cpp‎ | thread


 
 
线程支持库
线程
(C++11)
this_thread 命名空间
(C++11)
(C++11)
(C++11)
互斥
mutex
(C++11)
通用锁管理
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
条件变量
(C++11)
期货
(C++11)
(C++11)
(C++11)
(C++11)
 
std::mutex
成员函数
原文:
Member functions
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
锁定
原文:
Locking
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
本机手柄
原文:
Native handle
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
 
定义于头文件 <mutex>
class mutex;
(C++11 起)
mutex类是一个同步原语,可用于保护共享数据被同时由多个线程访问.
原文:
The mutex class is a synchronization primitive that can be used to protect shared data from being simultaneously accessed by multiple threads.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
mutex提供独特的,非递归的所有权语义。
原文:
mutex offers exclusive, non-recursive ownership semantics:
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
  • 。调用线程“拥有”一个mutex的时间,它成功地调用要么locktry_lock直到它调用unlock.
    原文:
    A calling thread owns a mutex from the time that it successfully calls either lock or try_lock until it calls unlock.
    文本通过谷歌翻译机器翻译。
    你可以帮忙校正和验证翻译。点击此处查看指示。
  • 。当一个线程拥有一个mutex,所有其他线程将阻止(调用lock),或者如果他们试图宣称拥有的false收到try_lock返回值(为mutex).
    原文:
    When a thread owns a mutex, all other threads will block (for calls to lock) or receive a false return value (for try_lock) if they attempt to claim ownership of the mutex.
    文本通过谷歌翻译机器翻译。
    你可以帮忙校正和验证翻译。点击此处查看指示。
  • 。调用线程必须没有自己的mutex之前调用locktry_lock.
    原文:
    A calling thread must not own a mutex prior to calling lock or try_lock.
    文本通过谷歌翻译机器翻译。
    你可以帮忙校正和验证翻译。点击此处查看指示。
程序的行为是不确定的,如果一个mutex被破坏,同时还拥有由某个线程。 mutex类是不可复制的。
原文:
The behavior of a program is undefined if a mutex is destroyed while still owned by some thread. The mutex class is non-copyable.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

目录

[编辑] 。会员类型。

。会员类型。
原文:
Member type
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
Definition
native_handle_type
。 “实现自定义”。
原文:
implementation-defined
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

[编辑] 。成员函数。

构造该互斥量
原文:
constructs the mutex
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(公开成员函数) [编辑]
。锁定。
原文:
Locking
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
锁住互斥体,块,如果该互斥锁不可用
原文:
locks the mutex, blocks if the mutex is not available
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(公开成员函数) [编辑]
试图锁定互斥锁,则返回,如果该互斥锁不可用
原文:
tries to lock the mutex, returns if the mutex is not available
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(公开成员函数) [编辑]
互斥量被释放
原文:
unlocks the mutex
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(公开成员函数) [编辑]
。本机手柄。
原文:
Native handle
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
返回底层实现定义的线程句柄
原文:
returns the underlying implementation-defined thread handle
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(公开成员函数) [编辑]

[编辑] 。为例。

。此示例显示了如何mutex可以用来保护两个线程之间共享一个std::map.
原文:
This example shows how a mutex can be used to protect a std::map shared between two threads.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

#include <iostream>
#include <chrono>
#include <thread>
#include <mutex>
#include <map>
#include <string>
 
std::map<std::string, std::string> g_pages;
std::mutex g_pages_mutex;
 
void save_page(const std::string &url)
{
    // simulate a long page fetch
    std::this_thread::sleep_for(std::chrono::seconds(2));
    std::string result = "fake content";
 
    g_pages_mutex.lock();
    g_pages[url] = result;
    g_pages_mutex.unlock();
}
 
int main() 
{
    std::thread t1(save_page, "http://foo");
    std::thread t2(save_page, "http://bar");
    t1.join();
    t2.join();
 
    g_pages_mutex.lock();
    for (const auto &pair : g_pages) {
        std::cout << pair.first << " => " << pair.second << '\n';
    }
    g_pages_mutex.unlock();
}

输出:

http://bar => fake content
http://foo => fake content