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_Divide And Conquer - Fatal编程技术网

Concurrency Clojure中分治算法的并行化

Concurrency Clojure中分治算法的并行化,concurrency,clojure,divide-and-conquer,Concurrency,Clojure,Divide And Conquer,首先,假设我有一个问题,计算10亿位数的Pi,计算一个大数字的阶乘,或者对一个大列表执行mergesort。我想把问题分成更小的任务,同时执行每个任务并合并结果。首先,这种并发类型的名称是什么,您将如何在Clojure中实现它?在当前的Clojure 1.4中,您可以使用maybe或。pmap函数是map的并行版本,而pcall和pvalues实际上没有类似的非并行版本(尽管我认为list是pvalues的“非并行版本”) 但是,对于您描述的问题,听起来您希望使用并行版本的reduce。Cloj

首先,假设我有一个问题,计算10亿位数的Pi,计算一个大数字的阶乘,或者对一个大列表执行mergesort。我想把问题分成更小的任务,同时执行每个任务并合并结果。首先,这种并发类型的名称是什么,您将如何在Clojure中实现它?

在当前的Clojure 1.4中,您可以使用maybe或。
pmap
函数是
map
的并行版本,而
pcall
pvalues
实际上没有类似的非并行版本(尽管我认为
list
pvalues
的“非并行版本”)

但是,对于您描述的问题,听起来您希望使用并行版本的
reduce
。Clojure1.2()中有一个旧版本,我从未使用过,因此我无法谈论它的实用性


Clojure1.5将提供这个新的“reducers”库,RichHickey在博客上对此进行了讨论。这里,
fold
似乎是
reduce

的并行版本,我没有深入研究过它们,但这可能是“Clojure reducer”的工作,他们在引擎盖下使用叉接并行。