multithreading - 线程本地,类实例本地存储?

标签 multithreading concurrency thread-local d

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

以下是一些限制条件:

  • 绝对不要要求同步。这排除了具有将线程ID映射到变量引用作为成员变量的哈希表的可能性。
  • 不得保留应进行垃圾收集的引用。这排除了具有按类实例索引的线程本地静态哈希表的可能性。
  • 初始化应该懒于提高效率。如果线程从不访问给定实例的变量,则永远不应创建它。
  • 最佳答案

    Must not keep references around that should be garbage-collected. This rules out having a thread-local, static hash table indexed by class instance.



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

    关于multithreading - 线程本地,类实例本地存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2061540/

    相关文章:

    android - 从线程中获取字符串值

    python - 在线程中调用 bash

    java - 如果我使用==,为什么安全单例实例不会为真

    algorithm - 3 个进程的 Dekker 算法

    java - 在并发环境中定义字段

    java - 在 EJB3 中使用 ThreadLocal 变量的固有危险?

    c++ - C++ 中独立于操作系统的并行 for 循环

    objective-c - 如何在只处理最新请求的 iOS 中实现工作队列?

    .net - 在 .NET 中使用线程本地存储的最佳实践是什么?

    python - 有人可以向我展示如何在 Django 中使用 threadlocals 的示例吗?