2012-08-16 54 views
5

这是一个理想的问题,因为我希望更好地理解Clojure的并发性。应该在事务中读取多个Clojure参考以保持一致性?

假设我在写boids。假设每个boid都是一个单独的绿色线程,在向量中变换位置或代表世界网格。想想Hickey的蚂蚁殖民地。

现在,Clojure.org上的文档声明:“所有参考文献的内容都将从交易的起点(其”读取点“)看到'参考世界'的一致快照。”

这是否意味着我只能得到我的模拟的一致快照,例如绘制,通过读取事务中我裁判的载体(即一个dosync范围内?)

谢谢!

回答

6

如果需要一致的快照,则需要事务。

如果您阅读交易之外的参考文献,那么在您阅读每一个参考文献时您将获得一个瞬时值。您无法保证其他交易不会改变您阅读之间的一个或多个参考文献,因此您最终可能会得到不一致的观点。