16

私はHaskellが初めてで、コールバックを今からX秒(そしてすぐに)起動するようにスケジュールする方法を見つけようとしています。

Hoogle と Google を検索したところ、次のことがわかりました。

http://www.haskell.org/ghc/docs/latest/html/libraries/base/GHC-Event.html

としても:

http://hackage.haskell.org/packages/archive/base/4.3.1.0/doc/html/System-Event.html

これらは両方とも、私が望むことを行うように見える「registerTimeout」機能を備えています。ただし、System.Event は Haskell の最新ビルドには含まれていないようで、GHC.Event は内部としてマークされています。

使用できるユーザー空間の代替品はありますか? GLUT 用のタイミング関数は使用したくありません (それが私の目標を達成するための規定された方法でない限り)。最小ではなく、何かにかかる時間を最大にすることを目的としています。

ご意見ありがとうございます。

4

1 に答える 1

19

遅延後に独自のスレッドでコールバックを実行するだけです。これがGHCイズムです。

import Control.Concurrent (forkIO, threadDelay)

-- | Run the callback after the given number of milliseconds.
runAfterDelay :: Int -> IO () -> IO ()
runAfterDelay t f = forkIO (threadDelay t >> f)

GHC のスレッドは非常に軽量であるため、システム リソースを占有することはありません。

于 2013-03-27T23:29:29.340 に答える