| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
UnliftIO.Concurrent
Description
Unlifted Control.Concurrent.
This module is not reexported by UnliftIO, use it only if UnliftIO.Async is not enough.
Since: 0.1.1.0
Synopsis
- data ThreadId
- myThreadId :: MonadIO m => m ThreadId
- forkIO :: MonadUnliftIO m => m () -> m ThreadId
- forkWithUnmask :: MonadUnliftIO m => ((forall a. m a -> m a) -> m ()) -> m ThreadId
- forkIOWithUnmask :: MonadUnliftIO m => ((forall a. m a -> m a) -> m ()) -> m ThreadId
- forkFinally :: MonadUnliftIO m => m a -> (Either SomeException a -> m ()) -> m ThreadId
- killThread :: MonadIO m => ThreadId -> m ()
- throwTo :: (Exception e, MonadIO m) => ThreadId -> e -> m ()
- forkOn :: MonadUnliftIO m => Int -> m () -> m ThreadId
- forkOnWithUnmask :: MonadUnliftIO m => Int -> ((forall a. m a -> m a) -> m ()) -> m ThreadId
- getNumCapabilities :: MonadIO m => m Int
- setNumCapabilities :: MonadIO m => Int -> m ()
- threadCapability :: MonadIO m => ThreadId -> m (Int, Bool)
- yield :: MonadIO m => m ()
- threadDelay :: MonadIO m => Int -> m ()
- threadWaitRead :: MonadIO m => Fd -> m ()
- threadWaitWrite :: MonadIO m => Fd -> m ()
- module UnliftIO.MVar
- module UnliftIO.Chan
- rtsSupportsBoundThreads :: Bool
- forkOS :: MonadUnliftIO m => m () -> m ThreadId
- isCurrentThreadBound :: MonadIO m => m Bool
- runInBoundThread :: MonadUnliftIO m => m a -> m a
- runInUnboundThread :: MonadUnliftIO m => m a -> m a
- mkWeakThreadId :: MonadIO m => ThreadId -> m (Weak ThreadId)
Concurrent Haskell
A ThreadId is an abstract type representing a handle to a thread.
ThreadId is an instance of Eq, Ord and Show, where
the Ord instance implements an arbitrary total ordering over
ThreadIds. The Show instance lets you convert an arbitrary-valued
ThreadId to string form; showing a ThreadId value is occasionally
useful when debugging or diagnosing the behaviour of a concurrent
program.
Note: in GHC, if you have a ThreadId, you essentially have
a pointer to the thread itself. This means the thread itself can't be
garbage collected until you drop the ThreadId. This misfeature would
be difficult to correct while continuing to support threadStatus.
Basic concurrency operations
myThreadId :: MonadIO m => m ThreadId Source #
Lifted version of myThreadId.
Since: 0.1.1.0
forkWithUnmask :: MonadUnliftIO m => ((forall a. m a -> m a) -> m ()) -> m ThreadId Source #
Deprecated: forkWithUnmask has been renamed to forkIOWithUnmask
Please use forkIOWithUnmask instead. This function has been deprecated
in release 0.2.11 and will be removed in the next major release.
Since: 0.1.1.0
forkIOWithUnmask :: MonadUnliftIO m => ((forall a. m a -> m a) -> m ()) -> m ThreadId Source #
Unlifted version of forkIOWithUnmask.
Since: 0.2.11
forkFinally :: MonadUnliftIO m => m a -> (Either SomeException a -> m ()) -> m ThreadId Source #
Unlifted version of forkFinally.
Since: 0.1.1.0
killThread :: MonadIO m => ThreadId -> m () Source #
Lifted version of killThread.
Since: 0.1.1.0
throwTo :: (Exception e, MonadIO m) => ThreadId -> e -> m () Source #
Throw an asynchronous exception to another thread.
Synchronously typed exceptions will be wrapped into an
AsyncExceptionWrapper, see
https://github.com/fpco/safe-exceptions#determining-sync-vs-async.
It's usually a better idea to use the UnliftIO.Async module, see https://github.com/fpco/safe-exceptions#quickstart.
Since: 0.1.0.0
Threads with affinity
forkOn :: MonadUnliftIO m => Int -> m () -> m ThreadId Source #
Unlifted version of forkOn.
Since: 0.1.1.0
forkOnWithUnmask :: MonadUnliftIO m => Int -> ((forall a. m a -> m a) -> m ()) -> m ThreadId Source #
Unlifted version of forkOnWithUnmask.
Since: 0.1.1.0
getNumCapabilities :: MonadIO m => m Int Source #
Lifted version of getNumCapabilities.
Since: 0.1.1.0
setNumCapabilities :: MonadIO m => Int -> m () Source #
Lifted version of setNumCapabilities.
Since: 0.1.1.0
threadCapability :: MonadIO m => ThreadId -> m (Int, Bool) Source #
Lifted version of threadCapability.
Since: 0.1.1.0
Scheduling
Waiting
threadDelay :: MonadIO m => Int -> m () Source #
Lifted version of threadDelay.
Since: 0.1.1.0
threadWaitRead :: MonadIO m => Fd -> m () Source #
Lifted version of threadWaitRead.
Since: 0.1.1.0
threadWaitWrite :: MonadIO m => Fd -> m () Source #
Lifted version of threadWaitWrite.
Since: 0.1.1.0
Communication abstractions
module UnliftIO.MVar
module UnliftIO.Chan
Bound Threads
rtsSupportsBoundThreads :: Bool #
True if bound threads are supported.
If rtsSupportsBoundThreads is False, isCurrentThreadBound
will always return False and both forkOS and runInBoundThread will
fail.
isCurrentThreadBound :: MonadIO m => m Bool Source #
Lifted version of isCurrentThreadBound.
Since: 0.1.1.0
runInBoundThread :: MonadUnliftIO m => m a -> m a Source #
Unlifted version of runInBoundThread.
Since: 0.1.1.0
runInUnboundThread :: MonadUnliftIO m => m a -> m a Source #
Unlifted version of runInUnboundThread.
Since: 0.1.1.0
Weak references to ThreadIds
mkWeakThreadId :: MonadIO m => ThreadId -> m (Weak ThreadId) Source #
Lifted version of mkWeakThreadId.
Since: 0.1.1.0