Concurrency 为了一致性,应该在事务中读取多个Clojure引用吗?
这是一个理论问题,我希望更好地理解Clojure的并发性 假设我在写博伊兹。假设每个boid是一个单独的绿色线程,在表示世界网格的向量或参照中变换位置。想想希基的蚁群吧 现在,Clojure.org上的文档声明“从事务的起点(其“读取点”)开始,所有Ref读取都将看到“Ref世界”的一致快照。” 这是否意味着我只能通过读取事务中的引用向量(即dosync上下文中的引用向量)来获得模拟的一致快照,例如绘制它Concurrency 为了一致性,应该在事务中读取多个Clojure引用吗?,concurrency,clojure,stm,refs,Concurrency,Clojure,Stm,Refs,这是一个理论问题,我希望更好地理解Clojure的并发性 假设我在写博伊兹。假设每个boid是一个单独的绿色线程,在表示世界网格的向量或参照中变换位置。想想希基的蚁群吧 现在,Clojure.org上的文档声明“从事务的起点(其“读取点”)开始,所有Ref读取都将看到“Ref世界”的一致快照。” 这是否意味着我只能通过读取事务中的引用向量(即dosync上下文中的引用向量)来获得模拟的一致快照,例如绘制它 谢谢 如果想要一致的快照,则需要事务 如果在事务外部读取ref,那么在读取每个ref时,您
谢谢 如果想要一致的快照,则需要事务 如果在事务外部读取ref,那么在读取每个ref时,您只会得到一个瞬时值。您无法保证另一个事务不会在读取之间更改一个或多个引用,因此可能会导致视图不一致