std::unique_lock

来自cppreference.com
< cpp‎ | thread

 
 
线程支持库
线程
(C++11)
this_thread 命名空间
(C++11)
(C++11)
(C++11)
互斥
(C++11)
通用锁管理
(C++11)
unique_lock
(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::unique_lock
成员函数
原文:
Member functions
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
锁定
原文:
Locking
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
修饰符
原文:
Modifiers
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
观察员
原文:
Observers
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
非成员函数
原文:
Non-member functions
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
 
定义于头文件 <mutex>
template< class Mutex >
class unique_lock;
(C++11 起)
unique_lock是一个通用的互斥体的所有权封装器,允许递延锁定,定时锁定,递归锁,锁的所有权转移,使用条件变量.
原文:
The class unique_lock is a general-purpose mutex ownership wrapper allowing deferred locking, timed locking, recursive locking, transfer of lock ownership, and use with condition variables.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
unique_lock类是不可复制的,但它是可动的。所提供的Mutex的类型应执行BasicLockable概念.
原文:
The unique_lock class is non-copyable, but it is movable. The supplied Mutex type shall implement the BasicLockable concept.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

目录

[编辑] 会员类型

类型
原文:
Type
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
Definition
mutex_type Mutex

[编辑] 成员函数

构建了一个unique_lock,可以提供的互斥锁
原文:
constructs a unique_lock, optionally locking the supplied mutex
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(公开成员函数) [编辑]
解锁相关的互斥体,如果拥有
原文:
unlocks the associated mutex, if owned
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(公开成员函数) [编辑]
解锁互斥体,如果拥有另一种获得所有权
原文:
unlocks the mutex, if owned, and acquires ownership of another
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

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

(公开成员函数) [编辑]
来锁定相关的TimedLockable互斥体,互斥体的回报,如果一直无法在指定的时间持续时间
原文:
attempts to lock the associated TimedLockable mutex, returns if the mutex has been unavailable for the specified time duration
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(公开成员函数) [编辑]
试图锁定相关的TimedLockable互斥的回报,如果互斥体已经不可用,直到指定的时间点已经达到
原文:
tries to lock the associated TimedLockable mutex, returns if the mutex has been unavailable until specified time point has been reached
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

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

(公开成员函数) [编辑]
修饰符
原文:
Modifiers
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
掉期国家与另一个std::unique_lock
原文:
swaps state with another std::unique_lock
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(公开成员函数) [编辑]
断开相关的未解锁的互斥
原文:
disassociates the associated mutex without unlocking it
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(公开成员函数) [编辑]
观察员
原文:
Observers
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
返回一个指针,指向相关联的互斥体
原文:
returns a pointer to the associated mutex
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(公开成员函数) [编辑]
测试的锁是否拥有相关联的互斥
原文:
tests whether the lock owns its associated mutex
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(公开成员函数) [编辑]
测试的锁是否拥有相关联的互斥
原文:
tests whether the lock owns its associated mutex
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

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

[编辑] 非成员函数

std::swapunique_lock 的特化
(函数模板) [编辑]

[编辑] 示例

#include <mutex>
#include <thread>
#include <chrono>
 
struct Box {
    explicit Box(int num) : num_things{num} {}
 
    int num_things;
    std::mutex m;
};
 
void transfer(Box &from, Box &to, int num)
{
    // don't actually take the locks yet
    std::unique_lock<std::mutex> lock1(from.m, std::defer_lock);
    std::unique_lock<std::mutex> lock2(to.m, std::defer_lock);
 
    // lock both unique_locks without deadlock
    std::lock(lock1, lock2);
 
    from.num_things -= num;
    to.num_things += num;
 
    lock1.unlock();
    lock2.unlock();
}
 
int main()
{
    Box acc1(100);
    Box acc2(50);
 
    std::thread t1(transfer, std::ref(acc1), std::ref(acc2), 10);
    std::thread t2(transfer, std::ref(acc2), std::ref(acc1), 5);
 
    t1.join();
    t2.join();
}