Clojure的演员

Ral*_*lph 5 clojure actor

我正在Scala中编写一个包含"文件复制"actor的实用程序.我发送要复制的文件名,并且演员一次执行一个.

我如何使用代理在Clojure中做同样的事情?

Ale*_*Ott 2

为什么需要使用代理来执行此操作?因为你想异步复制它们?但如果你仍然想这样做,你可以使用类似的东西:

(do-all (for [x file-names] (send-off agent-name copy-function x)))
Run Code Online (Sandbox Code Playgroud)

不过,也许使用期货更好?

  • 对每个要复制的文件使用“future”将使复制异步,可以轻松地阻止每个文件(或您可能想要等待的特定文件),并允许同时进行所有多个副本(这可能或者可能不是您想要的)。多次发送到单个代理会将复制操作排队,以便任何一次只会发生一个。 (2认同)