【发布时间】:2011-01-04 21:57:42
【问题描述】:
是否有一种良好的、与平台无关的方法来实现对线程和类实例都是本地的变量,即如果您有 T 线程和 I 类实例,那么您有该变量的 TxI 实例?我使用的是 D 编程语言,版本 2,但一个与语言无关的良好答案也会很有用。
这里有一些限制:
- 绝不能要求同步。这排除了将哈希表映射到作为成员变量的变量引用的线程 ID。
- 不得保留应该被垃圾回收的引用。这排除了由类实例索引的线程本地静态哈希表。
- 为了效率,初始化应该是惰性的。如果线程从不访问给定实例的变量,则永远不应该创建它。
【问题讨论】:
-
D2 没有隐式线程本地存储吗? D1 有 __thread 加上 Tango/druntime 的 TLS 实现 IIRC。
-
D2 具有隐式线程局部变量,但仅适用于全局变量和静态变量。
-
运行时 TLS 怎么样?可以动态分配吗?
标签: multithreading concurrency thread-local d