浅析Linux中的线程局部存储( 七 )
函数pthread_setspecific()用于将value的副本存储于一数据结构中 , 并将其与调用线程以及key相关联 。 参数value通常指向由调用者分配的一块内存 , 当线程终止时 , 会将该指针作为参数传递给与key相关联的destructor函数 。 当线程被创建时 , 会将所有的线程局部存储变量初始化为NULL , 因此第一次使用此类变量前必须先调用pthread_getspecific()函数来确认是否已经于对应的key相关联 , 如果没有 , 那么pthread_getspecific()会分配一块内存并通过pthread_setspecific()函数保存指向该内存块的指针 。
参数value的值也可以不是一个指向调用者分配的内存区域 , 而是任何可以强制转换为void*的变量值 , 在这种情况下 , 先前的pthread_key_create()函数应将参数
destructor设置为NULL
函数pthread_getspecific()正好与pthread_setspecific()相反 , 其是将pthread_setspecific()设置的value取出 。 在使用取出的值前最好是将void*转换成原始数据类型的指针 。
推荐阅读
- 热血传奇|热血传奇:当年心中的巅峰,随便一件无比骄傲
- 手办|原神:“肝帝”再现!玩家花30天自制胡桃手办,手中的护摩亮了
- edg战队|EDG夺冠可谓是小说中的梦幻剧情,先破RNG再废GEN.G,豪虐DK夺冠
- 亚运会|LOL入选亚运会正赛,你心中的阵容怎么选?
- 孙权|三国杀:背景帝!武将皮肤中的最强客串王,孙十万果然名不虚传
- 夏侯惇|王者荣耀之中的“最强坦克”, 夏侯惇和程咬金你更喜欢谁?
- 穿越火线|轻松上手,赶超雷神:盘点CF中那些神枪中的天之骄子
- 明日之后|消逝的光芒2设计师:明日之后打造了我心目中的人尸大决战
- 老玩家|天龙网游:天龙游戏中的神奇玩法,没有经历过别说自己是老玩家
- 魔兽世界|魔兽世界玩家未解之谜,王者荣耀中的死亡骑士,得到授权了吗?