| Safe Haskell | Safe-Inferred | 
|---|---|
| Language | Haskell2010 | 
Clckwrks.IOThread
Description
this module provides a simple mechanism for adding IO operations to a queue and running them in a single thread. This is useful if the IO operations have side-effects which could collide if run from multiple threads. For example, creating an image thumbnail and storing it on disk, running LaTeX, etc.
Synopsis
- data IOThread a b = IOThread {- ioThreadId :: ThreadId
- ioThreadChan :: Chan (a, MVar (Either SomeException b))
 
- startIOThread :: (a -> IO b) -> IO (IOThread a b)
- killIOThread :: IOThread a b -> IO ()
- ioRequest :: IOThread a b -> a -> IO b
Documentation
Constructors
| IOThread | |
| Fields 
 | |
Arguments
| :: (a -> IO b) | the IO function that does all the work | 
| -> IO (IOThread a b) | a handle to the IOThread | 
start the IO thread.
killIOThread :: IOThread a b -> IO () Source #
kill the IOThread
WARNING: no attempt is made to wait for the queue to empty... we should probably have safer version that waits for the operations to complete?