2012-08-31 15 views
9

首先說我有一個問題,計算Pi的十億個數字,計算一個大數的階乘,或者在一個大列表上執行mergesort。我想將問題分成更小的任務並且同時執行每個任務併合並結果。首先,這種類型的併發的名稱是什麼,你如何在Clojure中做到這一點?如何在Clojure中實現分治算法

+1

我還沒有深入研究過它們,但也許這是「Clojure Reducers」的一個工作,它在引擎蓋下使用fork-join parallelism。 –

+1

http://codereview.stackexchange.com/questions/15160/calculating-a-factorial-with-parallel-sub-computations-using-pmap-pvalues-and-p – noahlz

回答

4

在當前的Clojure 1.4中,您可以使用pmap,pcallspvalues來完成此操作。 pmap函數是map的並行版本,而pcallspvalues實際上並不具有類似的非並行版本(儘管我認爲listpvalues的「非並行版本」)。

但是,對於您所描述的問題,聽起來像您想要使用reduce的並行版本。有一個來自Clojure 1.2( see here)的舊版本,我從來沒有用過,所以我不能說它的實用性。

即將與Clojure 1.5將這個新的「redurs」圖書館,其中Rich Hickey博客約here。在這裏,fold似乎是reduce的並行版本。