浅析Linux中的线程局部存储( 三 )
二、一次性初始化
在讲解线程特有数据之前 , 先让我们来了解一下一次性初始化 。 多线程程序有时有这样的需求:不管创建多少个线程 , 有些数据的初始化只能发生一次 。 列如:在C++程序中某个类在整个进程的生命周期内只能存在一个实例对象 , 在多线程的情况下 , 为了能让该对象能够安全的初始化 , 一次性初始化机制就显得尤为重要了 。 ——在设计模式中这种实现常常被称之为单例模式(Singleton) 。 Linux中提供了如下函数来实现一次性初始化:
#include <pthread.h>
// Returns 0 on success or a positive error number on error
int pthread_once (pthread_once_t *once_control void (*init) (void));
利用参数once_control的状态 , 函数pthread_once()可以确保无论有多少个线程调用多少次该函数 , 也只会执行一次由init所指向的由调用者定义的函数 。 init所指向的函数没有任何参数 , 形式如下:
推荐阅读
- 热血传奇|热血传奇:当年心中的巅峰,随便一件无比骄傲
- 手办|原神:“肝帝”再现!玩家花30天自制胡桃手办,手中的护摩亮了
- edg战队|EDG夺冠可谓是小说中的梦幻剧情,先破RNG再废GEN.G,豪虐DK夺冠
- 亚运会|LOL入选亚运会正赛,你心中的阵容怎么选?
- 孙权|三国杀:背景帝!武将皮肤中的最强客串王,孙十万果然名不虚传
- 夏侯惇|王者荣耀之中的“最强坦克”, 夏侯惇和程咬金你更喜欢谁?
- 穿越火线|轻松上手,赶超雷神:盘点CF中那些神枪中的天之骄子
- 明日之后|消逝的光芒2设计师:明日之后打造了我心目中的人尸大决战
- 老玩家|天龙网游:天龙游戏中的神奇玩法,没有经历过别说自己是老玩家
- 魔兽世界|魔兽世界玩家未解之谜,王者荣耀中的死亡骑士,得到授权了吗?