MSTL 1.4.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
lock< Mutex, true > 模板类 参考

智能锁管理器模板 更多...

#include <mutex.hpp>

Public 类型

using mutex_type = Mutex
 互斥锁类型

Public 成员函数

 lock ()=default
 默认构造函数
 lock (mutex_type &m)
 从互斥锁构造
 lock (mutex_type &m, defer_lock_tag tag) noexcept
 延迟锁定构造函数
 lock (mutex_type &m, try_lock_tag tag) noexcept
 尝试锁定构造函数
 lock (lock &&other) noexcept
 移动构造函数
lockoperator= (lock &&other) noexcept
 移动赋值运算符
 ~lock ()
 析构函数
MSTL_NODISCARD operator bool () const noexcept
 转换为布尔值
MSTL_NODISCARD bool owns_lock () const noexcept
 检查是否拥有锁
MSTL_NODISCARD mutex_typemutex () const noexcept
 获取管理的互斥锁指针
void lock_quiet ()
 锁定互斥锁
void unlock_quiet ()
 解锁互斥锁
bool try_lock () noexcept
 尝试锁定互斥锁
mutex_typerelease () noexcept
 释放所有权

详细描述

template<typename Mutex>
class lock< Mutex, true >

智能锁管理器模板

模板参数
Mutex互斥锁类型

更灵活的RAII锁管理器,支持延迟锁定、尝试锁定、转移所有权等特性。 提供更多的控制能力。

在文件 mutex.hpp250 行定义.

构造及析构函数说明

◆ lock() [1/5]

template<typename Mutex>
lock< Mutex, true >::lock ( )
default

默认构造函数

创建不管理任何互斥锁的唯一锁。

被这些函数引用 lock() , 以及 operator=().

◆ lock() [2/5]

template<typename Mutex>
lock< Mutex, true >::lock ( mutex_type & m)
inlineexplicit

从互斥锁构造

参数
m要管理的互斥锁引用

构造时立即锁定互斥锁。

在文件 mutex.hpp272 行定义.

◆ lock() [3/5]

template<typename Mutex>
lock< Mutex, true >::lock ( mutex_type & m,
defer_lock_tag tag )
inlinenoexcept

延迟锁定构造函数

参数
m要管理的互斥锁引用
tag延迟锁定标签

构造时不锁定互斥锁,稍后可以调用lock()锁定。

在文件 mutex.hpp284 行定义.

◆ lock() [4/5]

template<typename Mutex>
lock< Mutex, true >::lock ( mutex_type & m,
try_lock_tag tag )
inlinenoexcept

尝试锁定构造函数

参数
m要管理的互斥锁引用
tag尝试锁定标签

构造时尝试锁定互斥锁,如果失败则不会阻塞。

在文件 mutex.hpp294 行定义.

◆ lock() [5/5]

template<typename Mutex>
lock< Mutex, true >::lock ( lock< Mutex, true > && other)
inlinenoexcept

移动构造函数

参数
other要移动的唯一锁

转移互斥锁的所有权和锁定状态。

在文件 mutex.hpp306 行定义.

引用了 lock().

◆ ~lock()

template<typename Mutex>
lock< Mutex, true >::~lock ( )
inline

析构函数

如果拥有锁的所有权,则解锁互斥锁。

在文件 mutex.hpp334 行定义.

成员函数说明

◆ lock_quiet()

template<typename Mutex>
void lock< Mutex, true >::lock_quiet ( )
inline

锁定互斥锁

如果已拥有锁或未管理互斥锁,则不执行任何操作。

在文件 mutex.hpp367 行定义.

◆ mutex()

template<typename Mutex>
MSTL_NODISCARD mutex_type * lock< Mutex, true >::mutex ( ) const
inlinenoexcept

获取管理的互斥锁指针

返回
指向管理的互斥锁的指针,如果没有管理则返回nullptr

在文件 mutex.hpp358 行定义.

◆ operator bool()

template<typename Mutex>
MSTL_NODISCARD lock< Mutex, true >::operator bool ( ) const
inlineexplicitnoexcept

转换为布尔值

返回
是否拥有锁的所有权

在文件 mutex.hpp342 行定义.

◆ operator=()

template<typename Mutex>
lock & lock< Mutex, true >::operator= ( lock< Mutex, true > && other)
inlinenoexcept

移动赋值运算符

参数
other要移动的唯一锁
返回
当前对象的引用

释放当前锁,然后转移所有权。

在文件 mutex.hpp319 行定义.

引用了 _MSTL, addressof() , 以及 lock().

◆ owns_lock()

template<typename Mutex>
MSTL_NODISCARD bool lock< Mutex, true >::owns_lock ( ) const
inlinenoexcept

检查是否拥有锁

返回
是否拥有锁的所有权

在文件 mutex.hpp350 行定义.

◆ release()

template<typename Mutex>
mutex_type * lock< Mutex, true >::release ( )
inlinenoexcept

释放所有权

返回
之前管理的互斥锁指针

放弃对互斥锁的管理权,返回互斥锁指针但不解锁。

在文件 mutex.hpp405 行定义.

◆ try_lock()

template<typename Mutex>
bool lock< Mutex, true >::try_lock ( )
inlinenoexcept

尝试锁定互斥锁

返回
如果成功获得锁则返回true,否则返回false

非阻塞地尝试锁定互斥锁。

在文件 mutex.hpp392 行定义.

◆ unlock_quiet()

template<typename Mutex>
void lock< Mutex, true >::unlock_quiet ( )
inline

解锁互斥锁

如果未拥有锁或未管理互斥锁,则不执行任何操作。

在文件 mutex.hpp379 行定义.


该类的文档由以下文件生成: