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
Clojure参考并添加手表_Clojure - Fatal编程技术网

Clojure参考并添加手表

Clojure参考并添加手表,clojure,Clojure,假设我有一个每30秒更新一次的ref状态和一个可能需要更长时间才能完成的fn。假设在时间0时,ref被更新,在时间30时调用的fn再次被更新,但fn仍在运行。我是在运行同一个函数的两个副本,还是在假设fn返回的情况下,它只是在时间60跳过并执行 编辑:我正在尝试更改ref的状态。它在其他地方被更新。我只是尝试将其用作触发器来进行一些控制计算。如果使用ref,两个函数将并行运行,并争夺生成ref下一个状态的权利,输者必须再次运行 这是REF和代理之间的区别之一。代理按顺序运行,因为它们有一个等待在

假设我有一个每30秒更新一次的ref状态和一个可能需要更长时间才能完成的fn。假设在时间0时,ref被更新,在时间30时调用的fn再次被更新,但fn仍在运行。我是在运行同一个函数的两个副本,还是在假设fn返回的情况下,它只是在时间60跳过并执行


编辑:我正在尝试更改ref的状态。它在其他地方被更新。我只是尝试将其用作触发器来进行一些控制计算。

如果使用ref,两个函数将并行运行,并争夺生成ref下一个状态的权利,输者必须再次运行


这是REF和代理之间的区别之一。代理按顺序运行,因为它们有一个等待在其上运行的函数队列。

fn不会更改ref。它实际上根据ref进行一些计算。它所做的是基于它控制一组字符的世界状态。我不希望有两个函数试图修改字符。使用ref(如第一点中所示)很可能无法获得所需的结果。将手表添加到代理应该会更接近您想要的。如果必须使用ref,可以向其添加手表,以便将更新功能发送到代理。这样,您的更新函数就不会被额外调用。