【发布时间】:2013-04-04 17:11:00
【问题描述】:
我正在寻找一种在 ST-Monad 中并行运行两个计算的方法。我正在构建一个相当大的数组(使用 STUArray),我想并行进行。
到目前为止,我在 stackoverflow 上找到了 this 和 this 问答,但是第一个不适用于我的情况,因为它只处理纯代码,第二个处理 IO monad - 但我是在状态线程中。
我还找到了monad-parallel 包,但它要求我有一个 ST 的“MonadParallel”实例。 monad-par 包也只支持纯计算或 IO monad。
有没有办法在 ST 中进行并行一元计算?
【问题讨论】:
-
并行构建一个大型数组听起来最好用纯代码而不是 ST 完成。我不认为你可以提供更多关于你想在每个单元格中放入什么以及为什么要使用 ST 的信息?可能存在问题,例如,如果您在 ST monad 中为每个单元运行单独的操作,那么这真的不能很容易地并行化,因为(与 IO 不同)ST 并没有真正为线程之间的通信提供原语。
标签: haskell parallel-processing monads state-monad