TLS is created at three occasions during the lifetime of a program.
At program startup.
When a new thread is created.
When a thread references a TLS block for the first time after a shared object is loaded following program startup.
Thread-local data storage is laid out at runtime as illustrated in Figure 14–1.
Figure 14-1 Runtime Storage Layout of Thread-Local Storage