clckwrks-0.25.5: A secure, reliable content management system (CMS) and blogging platform

Safe HaskellSafe
LanguageHaskell2010

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

Documentation

data IOThread a b Source #

Constructors

IOThread 

startIOThread Source #

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?

ioRequest Source #

Arguments

:: IOThread a b

handle to the IOThread

-> a

argument to the function in the IOThread

-> IO b

value returned by the function in the IOThread

issue a request to the IO thread and get back the result if the thread function throws an exception ioRequest will rethrow the exception.