【发布时间】:2014-03-03 16:53:21
【问题描述】:
- 没有其他原因,我编写了许多其他自定义库,它们在 1.1 上运行。
我需要一种直接的方法来设置线程局部变量,我见过的很多方法都与这个版本的 clojure 不兼容。
在这个examples看到
例如 (thread-local (atom 0)))
(def ^{:dynamic true} 计数器)
似乎不适合我
所以我只需要指出正确的方向。
【问题讨论】:
-
你试过
(def *counter*)吗?如果我记得,带有“耳罩”的符号在早期版本的 clojure 中按照惯例是动态的。 -
耳罩是一些人用来识别原子变量的约定。
-
我不明白这个问题。是不是 - (a) 您想永远生活在 4 年前发布的 1.1 版本中,并希望使用您在当前版本中未描述的技术 - 或者 - (b) 您已决定迁移您的代码库到当前版本,并且不知道如何将您未描述的习语转换为在当前版本中工作。
-
我认为普通变量是线程本地的,除非它们有根绑定
-
您链接到的答案中的
thread-local是vemv答案中使用的构造的更漂亮的clojure 样式包装器。我不清楚链接的答案有什么问题使这个更好,因为它只是在下面使用相同的东西。
标签: java multithreading clojure thread-local thread-local-storage