-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | A principal solution to ghost threads and silent exceptions -- -- Vanilla thread management in Haskell is low level and it does not -- approach the problems related to thread deaths. When it's used naively -- the following typical problems arise: -- -- -- -- This library solves all the issues above with a concept of a slave -- thread. A slave thread has the following properties: -- --
    --
  1. When it dies for whatever reason (exception or finishing normally) -- it kills all the slave threads that were forked from it. This protects -- you from ghost threads.
  2. --
  3. It waits for all slaves to die and execute their finalizers before -- executing its own finalizer and getting released itself. This gives -- you hierarchical releasing of resources.
  4. --
  5. When a slave thread dies with an uncaught exception it reraises it -- in the master thread. This protects you from silent exceptions and -- lets you be sure of getting informed if your program gets brought to -- an erroneous state.
  6. --
@package slave-thread @version 1.0.2 -- | Vanilla thread management in Haskell is low level and it does not -- approach the problems related to thread deaths. When it's used naively -- the following typical problems arise: -- -- -- -- This library solves all the issues above with a concept of a slave -- thread. A slave thread has the following properties: -- --
    --
  1. When it dies for whatever reason (exception or finishing normally) -- it kills all the slave threads that were forked from it. This protects -- you from ghost threads.
  2. --
  3. It waits for all slaves to die and execute their finalizers before -- executing its own finalizer and getting released itself. This gives -- you hierarchical releasing of resources.
  4. --
  5. When a slave thread dies with an uncaught exception it reraises it -- in the master thread. This protects you from silent exceptions and -- lets you be sure of getting informed if your program gets brought to -- an erroneous state.
  6. --
module SlaveThread -- | Fork a slave thread to run a computation on. fork :: IO a -> IO ThreadId -- | Fork a slave thread with a finalizer action to run a computation on. -- The finalizer gets executed when the thread dies for whatever reason: -- due to being killed or an uncaught exception, or a normal termination. -- -- Note the order of arguments: -- --
--   forkFinally finalizer computation
--   
forkFinally :: IO a -> IO b -> IO ThreadId