【发布时间】:2016-06-12 01:22:47
【问题描述】:
我正在阅读操作系统概念中的线程,我遇到了“线程本地存储 (TLS)”。我的理解是 TLS 类似于静态或全局数据,但它更独特于单个线程。这里的独特之处有点令人困惑?
为什么我们不能通过 runner(即线程的实际代码)函数将数据作为参数传递给这个函数?
【问题讨论】:
-
Why can't we pass the data ... as params to this function?- 这样您就可以将数据 local 用于给定函数,而 TLS 实现 global 数据。本地和全局数据是替代品,每个都有自己的道具。和缺点。 -
几十年来我一直在编写多线程应用程序,还没有使用“全局线程”TLS。令人惊讶的是有多少开发人员。 'globals are bad' 很好,但很乐意使用 TLS。
-
对于新手,我建议阅读The Linux Programming Interface一书的31: Threads: Thread Safety and Per-Thread Storage,你会在那里得到你所有的答案。
-
@Rick 感谢您推荐这本好书
标签: multithreading operating-system