2024 Clojure状态调查中分享您的想法!

欢迎!请查阅关于页面以了解有关如何操作的更多信息。

0
转换器

partition-by和partition-all转换器使用ArrayList中存储的状态。此状态应受保护(例如,使用volatile),以确保在可跨线程移动计算的转换过程中使用时可见。

4 个答案

0

评论由:leonoel发表

在此讨论:https://groups.google.com/forum/m/#!topic/clojure/VQj0E9TJWYY

0

评论由:leonoel发表

请注意,按照这一逻辑,transients的损坏程度和它们使用普通数组一样。
本段https://clojure.org/reference/transients#_concurrent_use 使我相信这个问题曾经被解决过。讨论可在哪里找到?
在我看来,文档应更精确地描述线程隔离的含义,并解释为什么当它们由某种强制顺序处理的东西(代理、go块、通道、单线程等)拥有时,可使用未同步的可变对象。

0

评论由:alexmiller发表

瞬态最初通过记录和验证发起线程来强制执行线程隔离。这在Clojure 1.7中允许将瞬态传递给go块,并且已经经历了几轮修复(如CLJ-1580)。如果现在有关于它们的问题,请单独提交一个工单。

0
参考:https://clojure.atlassian.net/browse/CLJ-2146(由alexmiller报告)
...