HORIZON HASKELLDocslts/ghc-9.14.x45dd5372026-10-11Search names, modules, packages, or :: a typeCtrl K

GHC 9.14.1 · lts/ghc-9.14.x · 45dd537 · 2026-10-11

Moduletime-manager-0.3.2Haskell2010

System.ThreadManager

A thread manager including a time manager. The manager has responsibility to kill managed threads.

Because this is based on the accompanying System.TimeManager module, the same caveats apply:

  • Only works for GHC.

  • Only works with a threaded runtime.

  • Users of older versions should check the current semantics.

  • Using 32-bit systems means the max timeout is maxBound :: Int (2147483647) microseconds, which is less than 36 minutes.

  • Using the same Handle in different threads might cause issues in some edge cases. (i.e. using cancel/pause in one thread, and resume in another)

  • 4 types
  • 14 values
datadata ThreadManager
#

Manager to manage the thread and the timer.

valuestopAfter :: ThreadManager -> IO a -> (Maybe SomeException -> IO ()) -> IO a
#

Stopping the manager.

stopAfter threadManager action cleanup

The action is run in the scope of an exception handler that catches all exceptions (including asynchronous ones); this allows the cleanup handler to cleanup in all circumstances. If an exception is caught, it is rethrown after the cleanup is complete.

Fork

5 declarations
valueforkManaged
  1. :: ThreadManager
  2. -> String

    Thread name

  3. -> IO ()

    Action

  4. -> IO ()
#

Fork a managed thread.

This guarantees that the thread ID is added to the manager's queue before the thread starts, and is removed again when the thread terminates (normally or abnormally).

Synchronization

2 declarations

Re-exports

6 declarations
newtypenewtype Manager
#

A timeout manager

datadata Handle
#

A handle used by a timeout manager.

valuetickle :: Handle -> IO ()
#

Extending the timeout.

Careful: this does NOT reactivate an already paused Handle!