YSTest: ystdex::single_thread 命名空间参考

YSTest PreAlpha_b800_20170810 The YSLib Test Project

- 首页
- 相关页面
- 模块
- 命名空间
- 类
- 文件

- 命名空间列表
- 命名空间成员

类
ystdex::single_thread 命名空间参考

单线程操作：保证单线程环境下接口及符合对应的 std 命名空间下的接口。 更多...

## 类

class | mutex
struct | once_flag
class | recursive_mutex
class | recursive_timed_mutex
class | shared_timed_mutex
class | timed_mutex

## 类型定义

template<class _tMutex >
using | lock_guard = threading::lock_guard< _tMutex >
template<class _tMutex >
using | unique_lock = threading::unique_lock< _tMutex >
template<class _tMutex >
using | shared_lock = threading::shared_lock< _tMutex >

## 函数

template<class _tLock1 , class _tLock2 , class... _tLocks>
int | try_lock (_tLock1 &&, _tLock2 &&, _tLocks &&...)
template<class _tLock1 , class _tLock2 , class... _tLocks>
void | lock (_tLock1 &&, _tLock2 &&, _tLocks &&...)
template<typename _fCallable , typename... _tParams>
void | call_once (once_flag &flag, _fCallable &&f, _tParams &&...args)
| 按标识调用函数，保证调用一次。 更多...

## 详细描述

单线程操作：保证单线程环境下接口及符合对应的 std 命名空间下的接口。

注解
  不包含本机类型相关的接口。

自从
  build 550

待办事项:
  添加 ISO C++1z 共享锁。

## 类型定义说明

template<class _tMutex >

using ystdex::single_thread::lock_guard = typedef threading::lock_guard <_tMutex>

注解
  定义宏 `NDEBUG` 时不进行检查，优化实现为空操作。

警告
  非虚析构。

自从
  build 722

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

template<class _tMutex >

using ystdex::single_thread::shared_lock = typedef threading::shared_lock <_tMutex>

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

template<class _tMutex >

using ystdex::single_thread::unique_lock = typedef threading::unique_lock <_tMutex>

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

## 函数说明

template<typename _fCallable , typename... _tParams>

void ystdex::single_thread::call_once | ( | once_flag & | flag,
|  | _fCallable && | f,
|  | _tParams &&... | args
| ) |  |

inline

按标识调用函数，保证调用一次。

注解
  类似 std::call_once ，但不保证线程安全性。
  ISO C++11（至 N3691 ） 30.4 synopsis 处的声明存在错误。

Bug:
  未实现支持成员指针。
  参见
    https://github.com/cplusplus/draft/issues/151 。
    CWG 1591 。
    CWG 2442 。

当标识为非初值时候无作用，否则调用函数。

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

参考 CHRLib::f() , 以及 yforward.

参考自 ystdex::call_once_init< YSLib::GUIApplication::InitBlock, once_flag >::call_once_init() , 以及 ystdex::call_once_init< YSLib::GUIApplication::InitBlock, once_flag >::~call_once_init().

函数调用图:

这是这个函数的调用关系图:
template<class _tLock1 , class _tLock2 , class... _tLocks>

void ystdex::single_thread::lock | ( | _tLock1 && | ,
|  | _tLock2 && | ,
|  | _tLocks && | ...
| ) |  |

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

template<class _tLock1 , class _tLock2 , class... _tLocks>

int ystdex::single_thread::try_lock | ( | _tLock1 && | ,
|  | _tLock2 && | ,
|  | _tLocks && | ...
| ) |  |

inline

自从
  build 550

参见
  ISO C++14 30.4.3[thread.lock.algorithm] 。

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