Haskell循环构建100%CPU

ove*_*ore -1 macos haskell osx-leopard ghc

我有一个我无法弄清楚的错误.使用Haskell Platform 2010,GHC 6.12,系统为10.5(32位)

考虑以下:

loop :: IO ()
loop = do
    return ()
    loop

main = do
    loop
Run Code Online (Sandbox Code Playgroud)

编译时,

ghc --make test.hs
Run Code Online (Sandbox Code Playgroud)

此代码最终占用了CPU的100%时间.这是为什么?你如何在Haskell中编写一个程序,像这样循环,同时对笔记本电脑的电池很好?

并发的"收益"似乎没有做任何有趣的事情.

Car*_*arl 9

同样的原因,任何语言的紧密循环都会占用整个CPU.你并没有告诉它循环任何慢于"尽可能快".看看Control.ConcurrentthreadDelay.


Pau*_* S. 8

无中断的无限循环将导致任何计算机上任何语言的CPU使用率达到100%
如果必须执行这样的循环,请使用延迟睡眠或降低线程优先级(如果它占用太多周期).