7

我有需要每 5 分钟执行一次的小程序。

目前,我有执行该任务的 shell 脚本,但我想通过 CLI 中的键为用户提供无需其他脚本即可运行它的能力。

实现这一目标的最佳方法是什么?

4

1 回答 1

9

我想你会想要这样的东西(或多或少的伪代码):

import Control.Concurrent (forkIO, threadDelay)
import Data.IORef
import Control.Monad (forever)

main = do
    var <- newIORef 5000
    forkIO (forever $ process var)
    forever $ readInput var

process var = do
    doActualProcessing

    interval <- readIORef var
    _ <- threadDelay interval

readInput var = do
    newInterval <- readLn
    writeIORef var newInterval

如果您需要将一些更复杂的数据从输入线程传递到处理线程,MVars 或TVars 可能是比IORefs 更好的选择。

于 2015-10-13T11:54:13.443 回答