TLS机制浅析

看libjingle库的过程中发现,它用了TLS机制来实现线程对象和线程的关联。这里简单记述下TLS的一些细节。

TLS(thread local sttorage), 首先看图,这是从核心编程里抠出来的。

image

进程会管理一个标识位组,每个标识表示一个slot(上面那个横向的框),当任意线程调用TlsAlloc时,系统都会扫描该标识位组,发现的第一个FREE标识时(可能是0),就返回该标识的索引,并将该标识设置为INUSE。这里要注意的是这个标识组是全局唯一的,也就是说如果线程1调用TlsAlloc返回3,就代表所有其他线程的索引3都被系统保留了,如果你其他线程调用TlsAlloc,你不会再或得3的标示了。

其他的TLS函数也很简单,TlsFree, TLsGetValue, TlsSetValue,顾名思义就可以了。

posted @ 2010-12-14 10:12  hjtc  Views(708)  Comments(0Edit  收藏  举报