MSDN:Thread Local Storage

原创 2011年01月10日 14:03:00

FW:http://msdn.microsoft.com/en-us/library/ms686749.aspx

All threads of a process share its virtual address space. The local variables of a function are unique to each thread that runs the function. However, the static and global variables are shared by all threads in the process. With thread local storage (TLS), you can provide unique data for each thread that the process can access using a global index. One thread allocates the index, which can be used by the other threads to retrieve the unique data associated with the index.

The constant TLS_MINIMUM_AVAILABLE defines the minimum number of TLS indexes available in each process. This minimum is guaranteed to be at least 64 for all systems. The maximum number of indexes per process is 1,088.

When the threads are created, the system allocates an array of LPVOID values for TLS, which are initialized to NULL. Before an index can be used, it must be allocated by one of the threads. Each thread stores its data for a TLS index in a TLS slot in the array. If the data associated with an index will fit in an LPVOID value, you can store the data directly in the TLS slot. However, if you are using a large number of indexes in this way, it is better to allocate separate storage, consolidate the data, and minimize the number of TLS slots in use.

The following diagram illustrates how TLS works. For a code example illustrating the use of thread local storage, see Using Thread Local Storage.

ms686749.tls(en-us,VS.85).png

The process has two threads, Thread 1 and Thread 2. It allocates two indexes for use with TLS, gdwTlsIndex1 and gdwTlsIndex2. Each thread allocates two memory blocks (one for each index) in which to store the data, and stores the pointers to these memory blocks in the corresponding TLS slots. To access the data associated with an index, the thread retrieves the pointer to the memory block from the TLS slot and stores it in the lpvData local variable.

It is ideal to use TLS in a dynamic-link library (DLL). For an example, see Using Thread Local Storage in a Dynamic Link Library.

Related Topics
Thread Local Storage (Visual C++)
Using Thread Local Storage
Using Thread Local Storage in a Dynamic Link Library

Thread Local Storage---__thread 关键字的使用方法

__thread是GCC内置的线程局部存储设施,存取效率可以和全局变量相比。__thread变量每一个线程有一份独立实体,各个线程的值互不干扰。可以用来修饰那些带有全局性且值可能变,但是又不值得用全局...
  • yusiguyuan
  • yusiguyuan
  • 2014年04月04日 15:19
  • 5929

线程本地存储(Thread Local Storage, TLS)分析与使用

线程本地存储(Thread Local Storage, TLS)简单分析与使用 在多线程编程中, 同一个变量, 如果要让多个线程共享访问, 那么这个变量可以使用关键字volatile进行声明; 那么...
  • apemancsdn
  • apemancsdn
  • 2004年08月26日 22:00
  • 9961

线程的局部存储tls (thread local storage)

线程局部存储tls(thread local storage) 线程的局部存储就是让一个全局的变量或者静态变量在每一个线程都有自己的立足之地. 动态TLS 首先调用API函数,获取当前进程可用的TLS...
  • hulele2009
  • hulele2009
  • 2013年10月15日 16:36
  • 1700

线程局部存储Thread Local Storage(TLS)

  在线程的学习中我们知道每个线程除了共享进程的资源外还拥有各自的私有资源:   一个寄存器组(或者说是线程上下文);一个专属的堆栈;一个专属的消息队列;一个专属的Thread Local Stora...
  • lqk1985
  • lqk1985
  • 2008年09月09日 16:49
  • 1810

pthread的TLS(THREAD LOCAL STORAGE)

TLS全称为Thread Local Storage,是系统为解决一个进程中多个线程同时访问全局变量而提供的机制。...
  • kanwah200
  • kanwah200
  • 2014年10月15日 11:37
  • 1242

Thread-Local Storage (TLS) support for Linux, 2.5.28

GDT in Linux SMP 2012-04-17 21:23:15 分类: LINUX 原来是共享的,但是发现性能不如each gdt per cpu,不利于实现TLS.现在每个C...
  • samssm
  • samssm
  • 2013年12月18日 13:13
  • 1100

TLS (Thread local storage)

Thread local storage (TLS) enables multiple threads of the same process to use an index allocated by...
  • cg05568256068
  • cg05568256068
  • 2009年09月20日 17:06
  • 574

线程局部存储(Thread Local Storage,TLS)

线程局部存储(Thread Local Storage,TLS)用来将数据与一个正在执行的指定线程关联起来。 进程中的全局变量与函数内定义的静态(static)变量,是各个线程都可以访问的共享变...
  • chongzi865458
  • chongzi865458
  • 2012年03月29日 11:32
  • 431

每天进步一点点——Linux中的线程局部存储(二)

Linux C/C++多线程编程中请善用__thread
  • cywosp
  • cywosp
  • 2014年05月24日 22:51
  • 6648

Thread-Local Storage for C99

线程本地存储(TLS)是一种机制,通过这种机制进行变量分配,在每个现存线程都有一个实例变量。这种运行模型GCC用来实现这个,起源于IA-64处理器,但是已经被迁移到其他的处理器。它需要大量的支持连接器...
  • jsh13417
  • jsh13417
  • 2014年10月23日 09:31
  • 1633
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MSDN:Thread Local Storage
举报原因:
原因补充:

(最多只允许输入30个字)