companion-0.1.0: A Haskell library to provide companion threads.
Safe HaskellSafe-Inferred
LanguageHaskell2010

Control.Concurrent.Companion

Description

Companion threads, such as for printing messages saying we're still busy.

Synopsis

Documentation

withCompanion :: forall m a. MonadUnliftIO m => Companion m -> (StopCompanion m -> m a) -> m a Source #

Keep running the Companion action until either the inner action completes or calls the StopCompanion action. This can be used to give the user status information while running a long running operations.

onCompanionDone Source #

Arguments

:: MonadUnliftIO m 
=> m ()

the delay

-> m ()

action to perform

-> m () 

When a delay was interrupted because we're told to stop, perform this action.

type Companion m = Delay -> m () Source #

A companion thread which can perform arbitrary actions as well as delay.

type Delay = forall mio. MonadIO mio => Int -> mio () Source #

Delay the given number of microseconds. If StopCompanion is triggered before the timer completes, a CompanionDone exception will be thrown (which is caught internally by withCompanion).

type StopCompanion m = m () Source #

Tell the Companion to stop. The next time Delay is called, or if a Delay is currently blocking, the Companion thread will exit with a CompanionDone exception.