当前位置: 首页 > news >正文

线程局部存储(TLS)

很多时候,我们可能想存储一些线程的私有数据,属于线程的私有变量有局部变量,函数的参数,假如我们要在线程中存储全局变量,多个线程访问都对这个变量有自己的一个副本。

一、隐式实现

__thread int a; //linux

__declspec int a; //windows

windows的tls实现原理,编译器会把a变量放到PE文件的.tls段中,当系统启动一个线程时候,会从进程的堆中分配一块足够的大小空间,然后把.tls段中的内容复制到这个空间,于是每个线程都有自己的独立的.tls副本,所以对于__declspec int a定义的同一个变量,他们在不同的线程有不同的地址。

二、显式实现

Windows:TlsAlloc() TlsGetValue() TlsSetValue() TlsFree()这四个函数 

Linuxs: pthread_key_create() pthread_getspecific() pthread_setspecific pthread_key_delete()

http://www.lryc.cn/news/460625.html

相关文章:

  • JavaSE——集合7:Set接口实现类—TreeSet
  • 【idea技巧篇】idea的类注释和方法注释模版自定义设置
  • 【Kubernetes① 基础】一、容器基础
  • 计算机网络第1章(概述)万字笔记详细版
  • 每日一练算法题(堆串的基本操作StrReplace(S, T, V))
  • IRP默认最小流程
  • 【全网最全】AI产品经理面试高频100题答案解析
  • VLLM实现大模型服务的部署
  • Java 基数排序
  • 红帽发送邮件操作
  • 学习记录:js算法(六十一):添加与搜索单词 - 数据结构设计
  • Jetpack-ObservableField实现双向绑定
  • STARnak, LTR 模型笔记
  • 【数据结构】:破译排序算法--数字世界的秩序密码(二)
  • 2024年《生成式ai大模型》都学什么内容呢?
  • kubernetes自定义pod启动用户
  • C4T避风型电动采光排烟天窗(图集09J621-2)
  • 多态常见面试问题
  • 案例-登录认证(上)
  • 对BSV区块链下一代节点Teranode的答疑解惑(上篇)
  • vue父子组件传参的方法
  • 关于this指针
  • 机器学习西瓜书
  • 如何使用 Puppeteer 和 Browserless 运行自动化测试?
  • python菜鸟知识
  • GPT4o,GPTo1-preview, 拼
  • 论文笔记:Pre-training to Match for Unified Low-shot Relation Extraction
  • 一篇文章带你快速了解linux中关于信号的核心内容
  • openEuler、Linux操作系统常见操作-(6)如何登录Linux
  • Python基础语法条件