Haskell、FFI和大中央调度?

Haskell、FFI和大中央调度?,haskell,multicore,ghc,grand-central-dispatch,ffi,Haskell,Multicore,Ghc,Grand Central Dispatch,Ffi,我正在考虑在FreeBSD、OSX和iOS下使用一种函数式语言,它可以很好地与我的C/Objective-C环境配合使用。看起来我的最佳选择是为特定函数创建函数语言库,用Haskell编写,用GHC编译,并使用FFI将此函数代码作为标准C调用调用 我的问题是,在这种情况下如何处理并发性使用函数式语言的一个动机是,对于我想在不可变数据集上操作的问题,我想进行大量并行化。然而,使用我在这里详述的方法,我会得到任何并行化吗?看起来我可以编译并指定使用2个线程,但是有没有办法使用GCD而不是线程(因为G

我正在考虑在FreeBSD、OSX和iOS下使用一种函数式语言,它可以很好地与我的C/Objective-C环境配合使用。看起来我的最佳选择是为特定函数创建函数语言库,用Haskell编写,用GHC编译,并使用FFI将此函数代码作为标准C调用调用

我的问题是,在这种情况下如何处理并发性使用函数式语言的一个动机是,对于我想在不可变数据集上操作的问题,我想进行大量并行化。然而,使用我在这里详述的方法,我会得到任何并行化吗?看起来我可以编译并指定使用2个线程,但是有没有办法使用GCD而不是线程(因为GCD比线程好,比如每个平台自动伸缩的并行化量)?或者,按照我所描述的FFI,我是否完全失去了多线程的能力


这门语言似乎最适合我所要做的事情,但我想在我投入大量时间真正学习它之前,先了解它是否适合我,GHC的运行时是否取代了GCD的需要,不是吗?而且它已经提供了跨平台并行性

你可以看看Erlang的并行和分布式功能编程。你需要详细说明更多的细节——你在开发什么样的应用程序?您希望在Haskell vs.C中编写哪些函数?您希望利用什么级别的并行性?是吗?到底是怎么回事?这叫什么,以便我能找到更多关于它的信息?当我在我的代码中使用完全编译和静态链接的w/runtime GHC输出时,这种并行性是否在我没有任何干预的情况下发生?GHC提供了丰富的运行时系统支持。获得并行性的主要机制是通过,尽管您可以考虑使用STM代替锁,也可以考虑使用其他并行机制(如火花、数据并行或PAR单元格)。您可以传递选项,包括要使用的功能的数量:只是想重申一下,我读了您做的一个演示,我发现它非常有启发性,看起来它确实完全回复了邮件。非常感谢。