浅析Linux中的线程局部存储( 九 )
2. 在常见的存储pthread_setspecific()函数参数value的实现中 , 大多数都类似于下图的实现 。 图中假设pthread_keys[1
分配给func1()函数 , pthread API为每个函数维护指向线程局部存储数据块的一个指针数组 , 其中每个数组元素都与图线程局部数据键的实现(上图)中的全局pthread_keys中元素一一对应 。
五、总结
使用全局变量或者静态变量是导致多线程编程中非线程安全的常见原因 。 在多线程程序中 , 保障非线程安全的常用手段之一是使用互斥锁来做保护 , 这种方法带来了并发性能下降 , 同时也只能有一个线程对数据进行读写 。 如果程序中能避免使用全局变量或静态变量 , 那么这些程序就是线程安全的 , 性能也可以得到很大的提升 。 如果有些数据只能有一个线程可以访问 , 那么这一类数据就可以使用线程局部存储机制来处理 , 虽然使用这种机制会给程序执行效率上带来一定的影响 , 但对于使用锁机制来说 , 这些性能影响将可以忽略 。 更高性能的线程局部存储机制就是使用__thread , 这个以后再讨论 。
推荐阅读
- 热血传奇|热血传奇:当年心中的巅峰,随便一件无比骄傲
- 手办|原神:“肝帝”再现!玩家花30天自制胡桃手办,手中的护摩亮了
- edg战队|EDG夺冠可谓是小说中的梦幻剧情,先破RNG再废GEN.G,豪虐DK夺冠
- 亚运会|LOL入选亚运会正赛,你心中的阵容怎么选?
- 孙权|三国杀:背景帝!武将皮肤中的最强客串王,孙十万果然名不虚传
- 夏侯惇|王者荣耀之中的“最强坦克”, 夏侯惇和程咬金你更喜欢谁?
- 穿越火线|轻松上手,赶超雷神:盘点CF中那些神枪中的天之骄子
- 明日之后|消逝的光芒2设计师:明日之后打造了我心目中的人尸大决战
- 老玩家|天龙网游:天龙游戏中的神奇玩法,没有经历过别说自己是老玩家
- 魔兽世界|魔兽世界玩家未解之谜,王者荣耀中的死亡骑士,得到授权了吗?