GHC编译选项-with-rtsopts=-N:适配编译时还是运行时机器核心数?
GHC
-with-rtsopts=-N 选项的核心数适配逻辑 -with-rtsopts=-N 是让编译出的Haskell程序在运行时自动适配当前机器的可用CPU核心数,和编译该程序的机器核心数没有关系:
- 编译阶段:这个选项只是给生成的可执行文件嵌入了启动指令——让GHC运行时系统(RTS)启动时使用
-N参数,不会固定任何核心数值。 - 运行阶段:程序启动后,RTS会自动检测当前运行机器的CPU核心数量,并将RTS的“能力(capability)”数量(用于调度Haskell轻量级线程的逻辑单元)设置为该数值。
- 跨机器适配:只要是同指令集(ISA)的机器,不管编译时用的是几核机器,运行时程序都会自动匹配当前机器的核心数。比如在4核机器编译的程序,拿到8核机器运行,会自动用8个能力数来调度线程。
内容的提问来源于stack exchange,提问作者Anon
相关产品推荐
相关产品推荐

