fixed-timestep-0.2.0.1: Pure Haskell library to repeat an action at a specific frequency.

Safe HaskellNone
LanguageHaskell2010

Time.Repeatedly

Contents

Description

Utilities for repeatedly running IO actions at a specific frequency.

Frequencies are in Hertz; for example, repeatedly 20 act will run act 20 times per second.

Synopsis

Repeating actions

repeatedly :: Rational -> IO a -> IO void Source #

Run an action repeatedly at the specified frequency (in Hertz). Uses the Monotonic clock for timing.

repeatedly' :: Rational -> Clock -> IO a -> IO void Source #

Run an action repeatedly at the specified frequency (in Hertz), using the given clock type.

Repeating actions in another thread

asyncRepeatedly :: Rational -> IO a -> IO (Async void) Source #

Run an action repeatedly at the specified frequency (in Hertz), in a separate thread. Uses the Monotonic clock for timing.

asyncRepeatedly' :: Rational -> Clock -> IO a -> IO (Async void) Source #

Run an action repeatedly at the specified frequency (in Hertz), in a separate thread, using the given clock type.

Implementation details

data TimeStepClock Source #

Internal state of the stepper. Created using newClock.

Instances
Eq TimeStepClock Source # 
Instance details

Defined in Time.Repeatedly

newClock :: Rational -> Clock -> IO TimeStepClock Source #

Initialise a new clock structure for the given frequency (in Hertz) and using the given clock type.

loopUsing :: TimeStepClock -> IO a -> IO void Source #

Repeat the given action using the information in the clock structure.

Reexports (timekeeping)

module Time.Flick

data Clock #

Clock types. A clock may be system-wide (that is, visible to all processes) or per-process (measuring time that is meaningful only within a process). All implementations shall support CLOCK_REALTIME. (The only suspend-aware monotonic is CLOCK_BOOTTIME on Linux.)

Constructors

Monotonic

The identifier for the system-wide monotonic clock, which is defined as a clock measuring real time, whose value cannot be set via clock_settime and which cannot have negative clock jumps. The maximum possible clock jump shall be implementation defined. For this clock, the value returned by getTime represents the amount of time (in seconds and nanoseconds) since an unspecified point in the past (for example, system start-up time, or the Epoch). This point does not change after system start-up time. Note that the absolute value of the monotonic clock is meaningless (because its origin is arbitrary), and thus there is no need to set it. Furthermore, realtime applications can rely on the fact that the value of this clock is never set.

Realtime

The identifier of the system-wide clock measuring real time. For this clock, the value returned by getTime represents the amount of time (in seconds and nanoseconds) since the Epoch.

ProcessCPUTime

The identifier of the CPU-time clock associated with the calling process. For this clock, the value returned by getTime represents the amount of execution time of the current process.

ThreadCPUTime

The identifier of the CPU-time clock associated with the calling OS thread. For this clock, the value returned by getTime represents the amount of execution time of the current OS thread.

MonotonicRaw

(since Linux 2.6.28; Linux-specific) Similar to CLOCK_MONOTONIC, but provides access to a raw hardware-based time that is not subject to NTP adjustments or the incremental adjustments performed by adjtime(3).

Boottime

(since Linux 2.6.39; Linux-specific) Identical to CLOCK_MONOTONIC, except it also includes any time that the system is suspended. This allows applications to get a suspend-aware monotonic clock without having to deal with the complications of CLOCK_REALTIME, which may have discontinuities if the time is changed using settimeofday(2).

MonotonicCoarse

(since Linux 2.6.32; Linux-specific) A faster but less precise version of CLOCK_MONOTONIC. Use when you need very fast, but not fine-grained timestamps.

RealtimeCoarse

(since Linux 2.6.32; Linux-specific) A faster but less precise version of CLOCK_REALTIME. Use when you need very fast, but not fine-grained timestamps.

Instances
Enum Clock 
Instance details

Defined in System.Clock

Eq Clock 
Instance details

Defined in System.Clock

Methods

(==) :: Clock -> Clock -> Bool #

(/=) :: Clock -> Clock -> Bool #

Read Clock 
Instance details

Defined in System.Clock

Show Clock 
Instance details

Defined in System.Clock

Methods

showsPrec :: Int -> Clock -> ShowS #

show :: Clock -> String #

showList :: [Clock] -> ShowS #

Generic Clock 
Instance details

Defined in System.Clock

Associated Types

type Rep Clock :: Type -> Type #

Methods

from :: Clock -> Rep Clock x #

to :: Rep Clock x -> Clock #

type Rep Clock 
Instance details

Defined in System.Clock

type Rep Clock = D1 (MetaData "Clock" "System.Clock" "clock-0.7.2-DpdvDKMysiO5fhuByT1Vyj" False) (((C1 (MetaCons "Monotonic" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "Realtime" PrefixI False) (U1 :: Type -> Type)) :+: (C1 (MetaCons "ProcessCPUTime" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "ThreadCPUTime" PrefixI False) (U1 :: Type -> Type))) :+: ((C1 (MetaCons "MonotonicRaw" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "Boottime" PrefixI False) (U1 :: Type -> Type)) :+: (C1 (MetaCons "MonotonicCoarse" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "RealtimeCoarse" PrefixI False) (U1 :: Type -> Type))))