Tim*_*rry 19 parallel-processing concurrency haskell multicore
Haskell wiki显示您需要设置编译标志和运行时标志以获得多核支持.为什么不使用足够的库来在编译时获得正确的行为?为什么运行时可执行文件检测不到它是使用-threaded编译并使用系统上的所有核心,除非另有说明?我认为默认情况下打开这些会更好.然后可能会有标志关闭或修改这些功能.
http://www.haskell.org/haskellwiki/GHC/Concurrency#Multicore_GHC说:
让标志必须在编译时和运行时再次设置似乎有些繁琐.这些标志是否是为GHC增加并发性的遗留因素?
Tho*_*son 31
当你正在开发程序时,额外的+RTS ...应该不是什么大问题(尽管我承认当我第一次拿起Haskell时它让我感到奇怪).对于最终(发货)二进制文件,您可以通过提供包含的C文件将其与静态RTS选项(GHC手册)链接char *ghc_rts_opts = "-N";.
编辑:为GHC 7.x更新此问题,现在有一种方法可以在编译时指定RTS选项:
ghc -threaded -rtsopts -with-rtsopts=-N
Run Code Online (Sandbox Code Playgroud)
这1)使用线程运行时系统2)启用RTS选项3)设置RTS选项以使用与可用核心一样多的线程(使用-Nx哪里x是一个数字来手动控制OS线程的数量).
为什么运行时可执行文件检测不到它是使用-threaded编译并使用系统上的所有核心,除非另有说明?
这是一个有趣的功能要求!
您可以在GHC功能跟踪器上询问它:http://hackage.haskell.org/trac/ghc/wiki/ReportABug