Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Concurrency 为了一致性,应该在事务中读取多个Clojure引用吗?_Concurrency_Clojure_Stm_Refs - Fatal编程技术网

Concurrency 为了一致性,应该在事务中读取多个Clojure引用吗?

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

这是一个理论问题,我希望更好地理解Clojure的并发性

假设我在写博伊兹。假设每个boid是一个单独的绿色线程,在表示世界网格的向量或参照中变换位置。想想希基的蚁群吧

现在,Clojure.org上的文档声明“从事务的起点(其“读取点”)开始,所有Ref读取都将看到“Ref世界”的一致快照。”

这是否意味着我只能通过读取事务中的引用向量(即dosync上下文中的引用向量)来获得模拟的一致快照,例如绘制它


谢谢

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

如果在事务外部读取ref,那么在读取每个ref时,您只会得到一个瞬时值。您无法保证另一个事务不会在读取之间更改一个或多个引用,因此可能会导致视图不一致