What is thread local storage? Why we need it?

后端 未结 3 1779
鱼传尺愫
鱼传尺愫 2021-02-15 17:52

I am reading the Threads in OS concepts and i come across \"thread local storage (TLS)\". What I understood is that the TLS is similar to static or global data, but it is more u

相关标签:
3条回答
  • 2021-02-15 18:06

    Static and global data are shared across all the threads. If you modified a global/static variable it is visible to all the threads. Unlike global/shared variable if you create a variable in TLS, every thread has its own copy of the variable, i.e. changes to the variable is local to the thread. Unlike global variable where an access is made through ds segment, the TLS variable are accessed using (gs/fs) segment. A good way to learn about it is to look at the disassembly generated by the compiler.

    0 讨论(0)
  • 2021-02-15 18:09

    Let's supposed you are working in Ada. In your Ada program you define a task (thread) that includes a [static] variable that can only be accessed by the task. You now create multiple instances of your task. Then you need a copy of that [static] variable for each task.

    That's where your implementation could use Thread Local Storage. In other words, it is a static area of memory that gets copied for each thread in a program.

    As an alternative to TLS, a thread could allocate such storage at the top of the stack.

    0 讨论(0)
  • 2021-02-15 18:21

    We need thread-local storage to create libraries that have thread-safe functions, because of the thread-local storage each call to a function has its copy of the same global data, so it's safe I like to point out that the implementation is the same for copy on write technique.

    in normal function with global data, the content of that data can be updated by multiple threads and make it unreliable, but in thread-local storage, you can think of it as

    "global became local when multiple access happen "

    0 讨论(0)
提交回复
热议问题