YSTest: ystdex::threading::lock_base< _tMutex, _bEnableCheck, _tReference > 模板类 参考

YSTest PreAlpha_b900_20201012 The YSLib Test Project

Public 类型 | Public 成员函数 | Private 成员函数 | Private 属性 | 友元 | 所有成员列表
ystdex::threading::lock_base< _tMutex, _bEnableCheck, _tReference > 模板类 参考

锁基类：可适配独占锁和共享锁。 更多...

`#include <pseudo_mutex.h>`

类 ystdex::threading::lock_base< _tMutex, _bEnableCheck, _tReference > 继承关系图:
[图例]
ystdex::threading::lock_base< _tMutex, _bEnableCheck, _tReference > 的协作图:
[图例]

## Public 类型

using | mutex_type = _tMutex
using | reference = _tReference

## Public 成员函数

| lock_base ()
| lock_base (mutex_type &m)
| lock_base (mutex_type &m, defer_lock_t)
| lock_base (mutex_type &m, try_to_lock_t)
| lock_base (mutex_type &m, adopt_lock_t)
template<typename _tClock , typename _tDuration >
| lock_base (mutex_type &m, const std::chrono::time_point< _tClock, _tDuration > &abs_time)
template<typename _tRep , typename _tPeriod >
| lock_base (mutex_type &m, const std::chrono::duration< _tRep, _tPeriod > &rel_time)
| lock_base (lock_base &&u)
| ~lock_base ()
lock_base & | operator= (lock_base &&u)
| operator bool () const
void | lock ()
bool | try_lock ()
template<typename _tRep , typename _tPeriod >
bool | try_lock_for (const std::chrono::duration< _tRep, _tPeriod > &rel_time)
template<typename _tClock , typename _tDuration >
bool | try_lock_until (const std::chrono::time_point< _tClock, _tDuration > &abs_time)
void | unlock ()
mutex_type * | release ()
bool | owns_lock () const
mutex_type * | mutex () const

## Private 成员函数

void | check_lock ()
void | clear_members ()
reference | get_ref ()
Private 成员函数 继承自 ystdex::bases::noncopyable
| noncopyable (const noncopyable &)=delete
| 禁止复制构造。 更多...
| noncopyable (noncopyable &&)=default
| 允许转移构造。 更多...
noncopyable & | operator= (const noncopyable &)=delete
| 禁止复制赋值。 更多...
noncopyable & | operator= (noncopyable &&)=default
| 允许转移赋值。 更多...
| noncopyable ()=default
| `protected` 构造：默认实现。 更多...
| ~noncopyable ()=default
| `protected` 析构：默认实现。 更多...

## Private 属性

mutex_type * | pm
bool | owns

## 友元

void | swap (lock_base &x, lock_base &y)

## 详细描述

### template<class _tMutex, bool _bEnableCheck = true, class _tReference = _tMutex&>
class ystdex::threading::lock_base< _tMutex, _bEnableCheck, _tReference >

锁基类：可适配独占锁和共享锁。

在文件 pseudo_mutex.h 第 276 行定义.

## 成员类型定义说明

## ◆ mutex_type

template<class _tMutex , bool _bEnableCheck = true, class _tReference = _tMutex&>

using ystdex::threading::lock_base< _tMutex, _bEnableCheck, _tReference >::mutex_type = _tMutex

在文件 pseudo_mutex.h 第 282 行定义.

## ◆ reference

template<class _tMutex , bool _bEnableCheck = true, class _tReference = _tMutex&>

using ystdex::threading::lock_base< _tMutex, _bEnableCheck, _tReference >::reference = _tReference

在文件 pseudo_mutex.h 第 283 行定义.

## 构造及析构函数说明

## ◆ lock_base() [1/8]

template<class _tMutex , bool _bEnableCheck = true, class _tReference = _tMutex&>

ystdex::threading::lock_base< _tMutex, _bEnableCheck, _tReference >::lock_base | ( |  | ) |

inline

在文件 pseudo_mutex.h 第 290 行定义.

## ◆ lock_base() [2/8]

template<class _tMutex , bool _bEnableCheck = true, class _tReference = _tMutex&>

ystdex::threading::lock_base< _tMutex, _bEnableCheck, _tReference >::lock_base | ( | mutex_type & | m | ) |

inlineexplicit

后置条件
  `pm == std::addressof(m)` 。

在文件 pseudo_mutex.h 第 297 行定义.

## ◆ lock_base() [3/8]

template<class _tMutex , bool _bEnableCheck = true, class _tReference = _tMutex&>

ystdex::threading::lock_base< _tMutex, _bEnableCheck, _tReference >::lock_base | ( | mutex_type & | m,
|  | defer_lock_t |
| ) |  |

inline

在文件 pseudo_mutex.h 第 303 行定义.

## ◆ lock_base() [4/8]

template<class _tMutex , bool _bEnableCheck = true, class _tReference = _tMutex&>

ystdex::threading::lock_base< _tMutex, _bEnableCheck, _tReference >::lock_base | ( | mutex_type & | m,
|  | try_to_lock_t |
| ) |  |

inline

前置条件
  mutex_type 满足 Lockable 要求。
  若 mutex_type 非递归锁，调用线程不持有锁。

在文件 pseudo_mutex.h 第 310 行定义.

## ◆ lock_base() [5/8]

template<class _tMutex , bool _bEnableCheck = true, class _tReference = _tMutex&>

ystdex::threading::lock_base< _tMutex, _bEnableCheck, _tReference >::lock_base | ( | mutex_type & | m,
|  | adopt_lock_t |
| ) |  |

inline

前置条件
  调用线程持有锁。

在文件 pseudo_mutex.h 第 314 行定义.

## ◆ lock_base() [6/8]

template<class _tMutex , bool _bEnableCheck = true, class _tReference = _tMutex&>
template<typename _tClock , typename _tDuration >

ystdex::threading::lock_base< _tMutex, _bEnableCheck, _tReference >::lock_base | ( | mutex_type & | m,
|  | const std::chrono::time_point< _tClock, _tDuration > & | abs_time
| ) |  |

inline

前置条件
  mutex_type 满足 TimedLockable 要求。
  若 mutex_type 非递归锁，调用线程不持有锁。

在文件 pseudo_mutex.h 第 323 行定义.

## ◆ lock_base() [7/8]

template<class _tMutex , bool _bEnableCheck = true, class _tReference = _tMutex&>
template<typename _tRep , typename _tPeriod >

ystdex::threading::lock_base< _tMutex, _bEnableCheck, _tReference >::lock_base | ( | mutex_type & | m,
|  | const std::chrono::duration< _tRep, _tPeriod > & | rel_time
| ) |  |

inline

在文件 pseudo_mutex.h 第 328 行定义.

## ◆ lock_base() [8/8]

template<class _tMutex , bool _bEnableCheck = true, class _tReference = _tMutex&>

ystdex::threading::lock_base< _tMutex, _bEnableCheck, _tReference >::lock_base | ( | lock_base< _tMutex, _bEnableCheck, _tReference > && | u | ) |

inline

后置条件
  `pm == u_p.pm && owns == u_p.owns` 当 `u_p` 是 u 之前的状态。
  `!u.pm && !u.owns` 。

在文件 pseudo_mutex.h 第 338 行定义.

## ◆ ~lock_base()

template<class _tMutex , bool _bEnableCheck = true, class _tReference = _tMutex&>

ystdex::threading::lock_base< _tMutex, _bEnableCheck, _tReference >::~lock_base | ( |  | ) |

inline

在文件 pseudo_mutex.h 第 343 行定义.

## 成员函数说明

## ◆ check_lock()

template<class _tMutex , bool _bEnableCheck = true, class _tReference = _tMutex&>

void ystdex::threading::lock_base< _tMutex, _bEnableCheck, _tReference >::check_lock | ( |  | ) |

inlineprivate

在文件 pseudo_mutex.h 第 372 行定义.

被这些函数引用 ystdex::threading::lock_base< _tMutex, true >::lock(), ystdex::threading::lock_base< _tMutex, true >::try_lock(), ystdex::threading::lock_base< _tMutex, true >::try_lock_for() , 以及 ystdex::threading::lock_base< _tMutex, true >::try_lock_until().

这是这个函数的调用关系图:

## ◆ clear_members()

template<class _tMutex , bool _bEnableCheck = true, class _tReference = _tMutex&>

void ystdex::threading::lock_base< _tMutex, _bEnableCheck, _tReference >::clear_members | ( |  | ) |

inlineprivate

在文件 pseudo_mutex.h 第 383 行定义.

被这些函数引用 ystdex::threading::lock_base< _tMutex, true >::release().

这是这个函数的调用关系图:

## ◆ get_ref()

template<class _tMutex , bool _bEnableCheck = true, class _tReference = _tMutex&>

reference ystdex::threading::lock_base< _tMutex, _bEnableCheck, _tReference >::get_ref | ( |  | ) |

inlineprivate

在文件 pseudo_mutex.h 第 389 行定义.

被这些函数引用 ystdex::threading::lock_base< _tMutex, true >::lock(), ystdex::threading::lock_base< _tMutex, true >::try_lock(), ystdex::threading::lock_base< _tMutex, true >::try_lock_for(), ystdex::threading::lock_base< _tMutex, true >::try_lock_until() , 以及 ystdex::threading::lock_base< _tMutex, true >::unlock().

这是这个函数的调用关系图:

## ◆ lock()

template<class _tMutex , bool _bEnableCheck = true, class _tReference = _tMutex&>

void ystdex::threading::lock_base< _tMutex, _bEnableCheck, _tReference >::lock | ( |  | ) |

inline

在文件 pseudo_mutex.h 第 397 行定义.

被这些函数引用 ystdex::threading::lock_base< _tMutex, true >::lock_base().

这是这个函数的调用关系图:

## ◆ mutex()

template<class _tMutex , bool _bEnableCheck = true, class _tReference = _tMutex&>

mutex_type* ystdex::threading::lock_base< _tMutex, _bEnableCheck, _tReference >::mutex | ( |  | ) | const

inline

在文件 pseudo_mutex.h 第 466 行定义.

## ◆ operator bool()

template<class _tMutex , bool _bEnableCheck = true, class _tReference = _tMutex&>

ystdex::threading::lock_base< _tMutex, _bEnableCheck, _tReference >::operator bool | ( |  | ) | const

inlineexplicit

在文件 pseudo_mutex.h 第 365 行定义.

## ◆ operator=()

template<class _tMutex , bool _bEnableCheck = true, class _tReference = _tMutex&>

lock_base& ystdex::threading::lock_base< _tMutex, _bEnableCheck, _tReference >::operator= | ( | lock_base< _tMutex, _bEnableCheck, _tReference > && | u | ) |

inline

后置条件
  `pm == u_p.pm && owns == u_p.owns` 当 `u_p` 是 u 之前的状态。
  `!u.pm && !u.owns` 。

参见
  LWG 2104 。

在文件 pseudo_mutex.h 第 355 行定义.

## ◆ owns_lock()

template<class _tMutex , bool _bEnableCheck = true, class _tReference = _tMutex&>

bool ystdex::threading::lock_base< _tMutex, _bEnableCheck, _tReference >::owns_lock | ( |  | ) | const

inline

在文件 pseudo_mutex.h 第 460 行定义.

## ◆ release()

template<class _tMutex , bool _bEnableCheck = true, class _tReference = _tMutex&>

mutex_type* ystdex::threading::lock_base< _tMutex, _bEnableCheck, _tReference >::release | ( |  | ) |

inline

在文件 pseudo_mutex.h 第 451 行定义.

## ◆ try_lock()

template<class _tMutex , bool _bEnableCheck = true, class _tReference = _tMutex&>

bool ystdex::threading::lock_base< _tMutex, _bEnableCheck, _tReference >::try_lock | ( |  | ) |

inline

前置条件
  reference 满足 Lockable 要求。

在文件 pseudo_mutex.h 第 406 行定义.

## ◆ try_lock_for()

template<class _tMutex , bool _bEnableCheck = true, class _tReference = _tMutex&>
template<typename _tRep , typename _tPeriod >

bool ystdex::threading::lock_base< _tMutex, _bEnableCheck, _tReference >::try_lock_for | ( | const std::chrono::duration< _tRep, _tPeriod > & | rel_time | ) |

inline

前置条件
  reference 满足 TimedLockable 要求。

在文件 pseudo_mutex.h 第 416 行定义.

## ◆ try_lock_until()

template<class _tMutex , bool _bEnableCheck = true, class _tReference = _tMutex&>
template<typename _tClock , typename _tDuration >

bool ystdex::threading::lock_base< _tMutex, _bEnableCheck, _tReference >::try_lock_until | ( | const std::chrono::time_point< _tClock, _tDuration > & | abs_time | ) |

inline

在文件 pseudo_mutex.h 第 424 行定义.

## ◆ unlock()

template<class _tMutex , bool _bEnableCheck = true, class _tReference = _tMutex&>

void ystdex::threading::lock_base< _tMutex, _bEnableCheck, _tReference >::unlock | ( |  | ) |

inline

在文件 pseudo_mutex.h 第 432 行定义.

被这些函数引用 ystdex::threading::lock_base< _tMutex, true >::operator=() , 以及 ystdex::threading::lock_base< _tMutex, true >::~lock_base().

这是这个函数的调用关系图:

## 友元及相关函数文档

## ◆ swap

template<class _tMutex , bool _bEnableCheck = true, class _tReference = _tMutex&>

void swap | ( | lock_base< _tMutex, _bEnableCheck, _tReference > & | x,
|  | lock_base< _tMutex, _bEnableCheck, _tReference > & | y
| ) |  |

friend

在文件 pseudo_mutex.h 第 444 行定义.

被这些函数引用 ystdex::threading::lock_base< _tMutex, true >::operator=(), ystdex::threading::unique_lock< platform::FileDescriptor >::swap() , 以及 ystdex::threading::shared_lock< _tMutex, _bEnableCheck >::swap().

## 类成员变量说明

## ◆ owns

template<class _tMutex , bool _bEnableCheck = true, class _tReference = _tMutex&>

bool ystdex::threading::lock_base< _tMutex, _bEnableCheck, _tReference >::owns

private

在文件 pseudo_mutex.h 第 287 行定义.

被这些函数引用 ystdex::threading::lock_base< _tMutex, true >::check_lock(), ystdex::threading::lock_base< _tMutex, true >::clear_members(), ystdex::threading::lock_base< _tMutex, true >::lock(), ystdex::threading::lock_base< _tMutex, true >::lock_base(), ystdex::threading::lock_base< _tMutex, true >::operator bool(), ystdex::threading::lock_base< _tMutex, true >::operator=(), ystdex::threading::lock_base< _tMutex, true >::owns_lock(), ystdex::threading::lock_base< _tMutex, true >::try_lock(), ystdex::threading::lock_base< _tMutex, true >::try_lock_for(), ystdex::threading::lock_base< _tMutex, true >::try_lock_until(), ystdex::threading::lock_base< _tMutex, true >::unlock() , 以及 ystdex::threading::lock_base< _tMutex, true >::~lock_base().

## ◆ pm

template<class _tMutex , bool _bEnableCheck = true, class _tReference = _tMutex&>

mutex_type* ystdex::threading::lock_base< _tMutex, _bEnableCheck, _tReference >::pm

private

在文件 pseudo_mutex.h 第 286 行定义.

被这些函数引用 ystdex::threading::lock_base< _tMutex, true >::check_lock(), ystdex::threading::lock_base< _tMutex, true >::clear_members(), ystdex::threading::lock_base< _tMutex, true >::get_ref(), ystdex::threading::lock_base< _tMutex, true >::mutex(), ystdex::threading::lock_base< _tMutex, true >::release() , 以及 ystdex::threading::lock_base< _tMutex, true >::unlock().

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

- pseudo_mutex.h