2

有没有一种很好的、​​与平台无关的方法来实现一个对线程和类实例都是本地的变量,即如果你有 T 线程和 I 类实例,你有那个变量的 TxI 实例?我使用的是 D 编程语言,版本 2,但一个与语言无关的良好答案也会很有用。

以下是一些限制条件:

  1. 绝不能要求同步。这排除了将哈希表映射到作为成员变量的变量引用的线程 ID。
  2. 不能保留应该被垃圾收集的引用。这排除了由类实例索引的线程本地静态哈希表。
  3. 为了效率,初始化应该是惰性的。如果线程从不访问给定实例的变量,则永远不应该创建它。
4

1 回答 1

2

不能保留应该被垃圾收集的引用。这排除了由类实例索引的线程本地静态哈希表。

使用带有弱引用键的哈希表。不会阻止垃圾收集,并且会在收集键(类实例)时从哈希表中删除信息。

于 2010-01-14T01:10:47.390 回答