forkOS

Like forkIO, this sparks off a new thread to run the IO computation passed as the first argument, and returns the ThreadId of the newly created thread. However, forkOS creates a bound thread, which is necessary if you need to call foreign (non-Haskell) libraries that make use of thread-local state, such as OpenGL (see Control.Concurrent#boundthreads). Using forkOS instead of forkIO makes no difference at all to the scheduling behaviour of the Haskell runtime system. It is a common misconception that you need to use forkOS instead of forkIO to avoid blocking all the Haskell threads when making a foreign call; this isn't the case. To allow foreign calls to be made without blocking all the Haskell threads (with GHC), it is only necessary to use the -threaded option when linking your program, and to make sure the foreign import is not marked unsafe.
Unflifted version of forkOS.
Generalized version of forkOS. Note that, while the forked computation m () has access to the captured state, all its side-effects in m are discarded. It is run only for its side-effects in IO.
Fork a computation to happen in a bound thread, which is necessary if you need to call foreign (non-Haskell) libraries that make use of thread-local state, such as OpenGL.
Lifted forkOS.
Like Control.Concurrent.forkOS but returns a computation that when executed blocks until the thread terminates then returns the final value of the thread.
Same as Control.Concurrent.Thread.forkOS but additionaly adds the thread to the group.
See forkOS.
Same as Control.Concurrent.Thread.Group.forkOS but waits there are less then the max size number of threads.
Generalized version of forkOS.
Generalized version of forkOS.
Start a new bound thread.
Like forkIOWithUnmask, but the child thread is a bound thread, as with forkOS.
Like forkOS, but the thread is given a name which may be used to present more useful debugging information.
Like forkOS, but the child thread is passed a function that can be used to unmask asynchronous exceptions. This function should not be used within a mask or uninterruptibleMask.
forkOSWithUnmask = forkOSWithUnmaskN ""
Like forkOSWithUnmask, but the thread is given a name which may be used to present more useful debugging information.
forkOSWithUnmaskN _ = forkOSWithUnmask
Will start a new bound thread.