【并发编程十八】线程局部存储(TLS)

本文介绍了线程局部存储TLS的概念,详细阐述了Windows和Linux系统下的实现方式,以及C++11中如何使用`thread_local`关键字进行线程局部变量的声明。并强调了线程局部存储的重点,包括线程变量的独立性、内存限制及最佳实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介:
对于一个存在多个线程的进程来说,有时需要每个线程都自己操作自己的这份数据。这有点类似c++类的实例的属性,每个实例对象操作的都是自己的属性。我们把这样的数据成为线程局部存储(thread local storage,TLS)

一、定义

  • 线程局部存储是指对象内存在线程开始后分配,线程结束时回收,且每个线程有该对象自己的实例。
  • 简单的说,线程局部存储的对象都是独立于各个线程的。
  • 实际上,这不是一个新鲜的概念,虽然c++一直没有在语言层面支持它,但是很早之前操作系统就有办法执行线程局部存储了。(c++直到c++11才从语言层面实现了)

二、线程局部存储的实现

  • 由于线程本身是操作系统中的概念,因此线程局部存储这个功能是离不开操作系统支持的。
  • 而不同的操作系统对线程局部存储的实现也不相同,以至于使用的系统api也有区别,
  • 这里我们对windows和linux简单介绍下,对c++11提供的线程局部存储我们详细写下demo。

1、windows系统

2、linu

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郑同学的笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值