我有一系列数组赋值:
...
(incf (aref res 1) formula1)
(incf (aref res 2) formula2)
...
公式i是一些复杂的自动生成代码,并且每个i都有很大不同。该代码是在编译时生成的 - 它是一个代数表达式,而不是宏或函数。
我想要的是将这些语句包装在类似“并行程序”的东西中,以便将分配分配到不同的工作线程上。执行顺序并不重要,因为每个索引都只分配一次。
我不知道如何将这个问题融入 lparallel 的抽象中,但也许我错过了一些东西。看来 pmap、plet 和 future 都不太适合这个问题。
原来有这样的包可用。通过调查
(ql:system-apropos "parallel")
列出的内容,我找到了 simple-parallel-tasks
,其中包括 pprogn
表格,记录为
并行评估表单并返回最后一个表单的评估结果。
(还有一个
pprog1
返回第一种形式)。