`threadDelay(maxBound :: Int)`是否会导致GHC错误或什么?

时间:2015-08-06 01:19:33

标签: haskell ghc

我希望我的程序能够永远锁定,而我的第一个想法是:

threadDelay (maxBound :: Int)

这给出了一些虚假的警告:

Prelude> import Control.Concurrent
Prelude Control.Concurrent> threadDelay 10
Prelude Control.Concurrent> threadDelay (maxBound :: Int)
<interactive>: c_poll: invalid argument (Invalid argument)
<interactive>: ioManagerWakeup: write: Bad file descriptor

我做错了还是做了GHC?

1 个答案:

答案 0 :(得分:8)

这似乎是known GHC bug,取得了一些进展(虽然并非所有配置似乎都已修复)。

与此同时,您可以使用forever (threadDelay (2^20))或类似方法作为解决方法; 2^20应远离maxBound以避免此错误,并且在您的系统上应该非常轻松地每秒唤醒一次,持续几个周期。