3

当我运行时,./MyProgram +RTS -N4我希望我的程序自动检测它在 4 个内核上运行并创建 4 个火花来处理数据集。现在,每次我想更改此选项时,我都会重新编译,这很烦人。

4

1 回答 1

2

回答您最初的问题:运行时选项是 GHC 特定的,并且 GHC 提供了一个模块,可让您查看传递给程序的完整参数列表(包括+RTS和) :.-RTSGHC.Environment

这是一个小演示:

import GHC.Environment (getFullArgs)
import System.Environment (getArgs)

main = do
    getFullArgs >>= mapM putStrLn
    putStrLn "=="
    getArgs >>= mapM putStrLn
    return ()

编译程序ghc App.hs --make -rtsopts -threaded会在执行时产生以下结果:

./App hello +RTS -N4 -RTS ook ooks
hello
+RTS
-N4
-RTS
ook
ooks
==
hello
ook
ooks
于 2012-12-12T18:22:24.817 回答