欢迎!请查阅关于页面以了解有关如何操作的更多信息。
partition-by和partition-all转换器使用ArrayList中存储的状态。此状态应受保护(例如,使用volatile),以确保在可跨线程移动计算的转换过程中使用时可见。
评论由:leonoel发表
在此讨论:https://groups.google.com/forum/m/#!topic/clojure/VQj0E9TJWYY
请注意,按照这一逻辑,transients的损坏程度和它们使用普通数组一样。本段https://clojure.org/reference/transients#_concurrent_use 使我相信这个问题曾经被解决过。讨论可在哪里找到?在我看来,文档应更精确地描述线程隔离的含义,并解释为什么当它们由某种强制顺序处理的东西(代理、go块、通道、单线程等)拥有时,可使用未同步的可变对象。
评论由:alexmiller发表
瞬态最初通过记录和验证发起线程来强制执行线程隔离。这在Clojure 1.7中允许将瞬态传递给go块,并且已经经历了几轮修复(如CLJ-1580)。如果现在有关于它们的问题,请单独提交一个工单。