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.
|:: (a -> IO b)|
the IO function that does all the work
|-> IO (ThreadId, IOThread a b)|
a ThreadId which can be used to kill the IOThread, and a handle that can be used to issue requests to the thread.
start the IO thread.