对于初始线程和所创建的每个新线程,线程库将为每个已装入的动态目标文件分配一个新的 TLS 块。各个块可以单独进行分配,也可以作为一个连续块进行分配。
每个线程 t 都有一个关联的线程指针 tpt,该指针指向线程控制块 TCB。线程指针 tp 始终包含当前正在运行的线程的 tpt 值。
然后,线程库为当前线程 t 创建一个指针向量 dtvt。每个向量的第一个元素都包含一个生成号 gent,该生成编号用于确定需要扩展向量的时间。请参见延迟分配线程局部存储块。
dtvt,m 向量中剩余的每个元素都是一个指针,指向为属于动态目标文件 m 的 TLS 保留的块。
对于启动后动态装入的目标文件,线程库将延迟分配 TLS 块。分配将在第一次引用已装入的目标文件中的 TLS 变量时进行。对于延迟分配的块,指针 dtvt,m 设置为实现定义的特殊值。
然后,线程库将初始化映像复制到新存储块中的对应位置。