小编Xan*_*nth的帖子

在并发环境中拍摄复杂可变结构的快照

给定:各种嵌套集合的复杂结构,其中refs分散在不同的级别.

需求:一种获取此类结构快照的方法,同时允许写入在其他线程中继续发生.

因此,"读者"线程需要在单个长事务中读取整个复杂状态."编写者"线程同时在多个短交易中进行修改.据我所知,在这种情况下,STM引擎利用了refs历史.

这里我们有一些有趣的结果.例如,读者在交易开始后10秒内到达一些参考.Writer每1秒修改一次ref.它产生10个ref历史值.如果超过ref的:max-history限制,读者交易将永远运行.如果超过:min-history,则可以多次重新运行事务.

但实际上读者只需要一个ref值(第一个),而作者只需要最近的一个.历史列表中的所有中间值都是无用的.有没有办法避免这种历史过度使用?

谢谢.

clojure

5
推荐指数
1
解决办法
209
查看次数

标签 统计

clojure ×1