YSTest
PreAlpha_b400_20130424
The YSLib Test Project
|
使用 call_once 的静态初始化管理器。 更多...
#include <utility.hpp>
Public 类型 | |
typedef _type | object_type |
typedef _tOnceFlag | flag_type |
Public 成员函数 | |
template<typename... _tParams> | |
call_once_init (_tParams &&...args) | |
~call_once_init () | |
静态 Public 成员函数 | |
static object_type & | get () |
静态 Private 成员函数 | |
static flag_type & | get_init_flag () |
static object_type *& | get_object_ptr () |
static flag_type & | get_uninit_flag () |
template<typename... _tParams> | |
static void | init (_tParams &&...args) |
static void | uninit () |
使用 call_once 的静态初始化管理器。
_tOnceFlag | 初始化调用标识。 |
<mutex>
的实现,使用 std::once_flag ,对应 std::call_once , 则是线程安全的; 若使用 bool ,对应 ystdex::call_once ,不保证线程安全。 其它类型可使用用户自行定义 call_once 。 静态初始化,使用 _tOnceFlag 类型的静态对象表示初始化和反初始化状态, 保证所有在定义本类型的对象后已有静态对象被初始化。 在所有翻译单元的本类型对象析构后自动反初始化。 初始化和反初始化调用没有限定符修饰的 call_once 初始化和反初始化。 用户可以自定义 _tOnceFlag 实际参数对应的 call_once ,但声明 应与 std::call_once 和 ystdex::call_once 形式一致。
在文件 utility.hpp 第 339 行定义.
typedef _tOnceFlag ystdex::call_once_init< _type, _tOnceFlag >::flag_type |
在文件 utility.hpp 第 343 行定义.
typedef _type ystdex::call_once_init< _type, _tOnceFlag >::object_type |
在文件 utility.hpp 第 342 行定义.
|
inline |
在文件 utility.hpp 第 346 行定义.
参考 ystdex::call_once(),ystdex::call_once_init< _type, _tOnceFlag >::get_init_flag() , 以及 yforward.
|
inline |
|
inlinestatic |
在文件 utility.hpp 第 356 行定义.
参考 ystdex::call_once_init< _type, _tOnceFlag >::get_object_ptr() , 以及 yassume.
|
inlinestaticprivate |
在文件 utility.hpp 第 365 行定义.
参考自 ystdex::call_once_init< _type, _tOnceFlag >::call_once_init().
|
inlinestaticprivate |
|
inlinestaticprivate |
在文件 utility.hpp 第 381 行定义.
参考自 ystdex::call_once_init< _type, _tOnceFlag >::~call_once_init().
|
inlinestaticprivate |
在文件 utility.hpp 第 390 行定义.
参考 ystdex::call_once_init< _type, _tOnceFlag >::get_object_ptr() , 以及 yforward.
|
inlinestaticprivate |
在文件 utility.hpp 第 396 行定义.
参考 ystdex::call_once_init< _type, _tOnceFlag >::get_object_ptr().
参考自 ystdex::call_once_init< _type, _tOnceFlag >::~call_once_init().