同一过程中的所有线程又只能使用同一个索引?与前面的话不矛盾吗?

同一进程中的所有线程又只能使用同一个索引??????与前面的话不矛盾吗?????
同一过程中的所有线程又只能使用同一个索引?与前面的话不矛盾吗?

在这里有一个线程局部存储器(Tls),我们大概了解一下,系统为进行中的每个线程维护了一个数组,但同一进程中的所有线程又只能使用同一个索引(就是我们在图中看到的__tlsindex),可以通过TlsSetValue向其中存放一个指针,通过TlsGetValue获取该存放的指针。



------解决方案--------------------
是这样的,每个线程有自己的TLS,比如是一个数组 int tls[200],这个数组是在线程私有的TEB上.你有20个线程,每个线程都一个这种数组.然后现在有一个全局索引值gIndex = 0.假设现在这些数组都还未被使用.你调用TlsAlloc,分配到的是索引是0,然后gIndex++.你在调用TlsAlloc就是1.虽然数据都是线程私有的,但是索引是公有的一个.
------解决方案--------------------
楼主,我们反过来理解吧。
如果不是这样设计的话,那么进程一旦结束,它如何回收所开启线程的全部资源呢?