【发布时间】:2011-08-17 19:23:42
【问题描述】:
我正在尝试并行计算文件夹大小。 也许这是天真的方法。 我所做的是,我将每个分支节点(目录)的计算交给代理。 所有叶节点的文件大小都添加到 my-size。 好吧,它不起作用。 :)
'scan' 工作正常,串行。 'pscan' 只打印第一级的文件。
(def agents (atom []))
(def my-size (atom 0))
(def root-dir (clojure.java.io/file "/"))
(defn scan [listing]
(doseq [f listing]
(if (.isDirectory f)
(scan (.listFiles f))
(swap! my-size #(+ % (.length f))))))
(defn pscan [listing]
(doseq [f listing]
(if (.isDirectory f)
(let [a (agent (.listFiles f))]
(do (swap! agents #(conj % a))
(send-off a pscan)
(println (.getName f))))
(swap! my-size #(+ % (.length f))))))
你有什么想法,我做错了什么?
谢谢。
【问题讨论】: