博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Atitit usrqbg1821 Tls 线程本地存储(ThreadLocal Storage 规范标准化草案解决方案ThreadStatic...
阅读量:7236 次
发布时间:2019-06-29

本文共 1526 字,大约阅读时间需要 5 分钟。

 

 

 

 

Atitit usrqbg1821 Tls 线程本地存储(ThreadLocal Storage 规范标准化草案解决方案ThreadStatic

 

 

1.1. ThreadLocal 设计模式

 

1.2. 标准化现状 线程局部存储在不同的平台有不同的实现,可移植性不太好。

线程局部存储在不同的平台有不同的实现,可移植性不太好。幸好要实现线程局部存储并不难,最简单的办法就是建立一个全局表,通过当前线程ID去查询相应的数据,因为各个线程的ID不同,查到的数据自然也不同了。大多数平台都提供了线程局部存储的方法,无需要我们自己去实现

 

1.3. Java与c#的ThreadLocal 

1.4. windowsTLS4API: TlsAllocTlsGetValueTlsSetValue TlsFree

 

1.5. 下支持两种方式定义和使用TLS变量,具体如下表:

定义方式

支持层次

访问方式

__thread关键字

语言层面

与全局变量完全一样

pthread_key_create函数

运行库层面

pthread_get_specific和pthread_set_specific对线程变量进行读写

应用语言支持的__thread关键字是最简单的,只须在定义变量时增加一个__thread关键字,后续对该变量的访问方式完全保持不变,所以这个是语言级别上的支持,属于隐式支持。_thread关键字是gcc对的扩展,不是C语言标准定义的,当然Windows下的Visual Stdio也使用另一个关键字做扩展。

 

 

 

1.6. Php里面儿的tls

. Native TLSNative Thread local storage,原生线程本地存储)

PHP在多线程模式下(例如,Web服务器Apachewokerevent模式,就是多线程),需要解决线程安全TSThread Safe)的问题,因为线程是共享进程的内存空间的,所以每个线程本身需要通过某种方式,构建私有的空间来保存自己的私有数据,避免和其他线程相互污染。而PHP5采用的方式,就是维护一个全局大数组,为每一个线程分配一份独立的存储空间,线程通过各自拥有的key值来访问这个全局数据组。

而这个独有的key值在PHP5中需要传递给每一个需要用到全局变量的函数,PHP7认为这种传递的方式并不友好,并且存在一些问题。因而,尝试采用一个全局的线程特定变量来保存这个key值。

相关的Native TLS问题:

 

参考资料

_NET(C#):线程本地存储(Thread-Local Storage)ThreadStatic, LocalDataStoreSlotThreadLocal - IT技术网.html

C#线程本地存储_LocalDataStoreSlotThreadLocal_T_.html

线程局部存储Thread Local StorageTLS-ylyxf-ChinaUnix博客.html

线程本地存储(WindowsLinux) - 缘起宇轩阁 - 博客频道 - CSDN.NET.html

 

PHP7革新与性能优化 - 战神悟空 - 博客园.html

线程局部存储(Thread Local StorageTLS_大坚坚坚_新浪博客.html

作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 

汉字名:艾提拉(艾龙)   EMAIL:1466519819@qq.com

转载请注明来源: http://www.cnblogs.com/attilax/

Atiend

 

 

你可能感兴趣的文章
一次非常有趣的 SQL 优化经历
查看>>
2019年最全最系统的大数据学习路线
查看>>
【云周刊】第206期:2018年阿里云云攻略十二篇精选好文 ...
查看>>
面对“烟囱式”难题,联想企业网盘展现跨时空延展能力
查看>>
函数第一部分:经典的永远是简单的-Python基础前传(10)
查看>>
一个该死的Linux权限问题
查看>>
Oracle 中关于 Between and 日期边界问题
查看>>
7.5-7.8一周学习笔记
查看>>
小米首款三折叠屏手机曝光,折叠屏会是2019年热潮吗?
查看>>
云服务器能干什么
查看>>
PCIe-8604 USB3.0图像采集卡无需额外供电机器视觉智能相机网卡
查看>>
新版 Microsoft Edge 有时会假扮成不同浏览器
查看>>
redis hash底层数据结构
查看>>
H5移动前端开发常用高能css3汇总
查看>>
大规模特征构建实践总结
查看>>
java源码-LinkedList
查看>>
WPF 引用 ttf文件
查看>>
WPF自定义控件 使用阿里巴巴图标
查看>>
Window 远程桌面无法复制粘贴(转载)
查看>>
WPF中使用ReportViewer报表
查看>>