开发者

Thread-local, class instance-local storage?

开发者 https://www.devze.com 2022-12-16 21:08 出处:网络
Is there a good, platform-agnostic way to implement a variable that\'s local to both a thread and a class instance, i.e. if you have T threads and I class instances, you have TxI instances of that var

Is there a good, platform-agnostic way to implement a variable that's local to both a thread and a class instance, i.e. if you have T threads and I class instances, you have TxI instances of that variable? I'm using the D programming language, version 2, but a good language-agnostic answer would also be useful.

Here are some constraints:

  1. Must never require syn开发者_开发百科chronization. This rules out having a hash table mapping thread ID to variable reference as a member variable.
  2. Must not keep references around that should be garbage-collected. This rules out having a thread-local, static hash table indexed by class instance.
  3. Initialization should be lazy for efficiency. If a thread never accesses a given instance's variable then it should never be created.


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

Use a hashtable with weak-referenced keys. Won't prevent garbage collection, and will drop the information from the hashtable when the key (the class instance) is collected.

0

精彩评论

暂无评论...
验证码 换一张
取 消