| Safe Haskell | None |
|---|---|
| Language | GHC2021 |
Effects.Concurrent.Thread
Description
Provides the MonadThread typeclass.
Since: 0.1
Synopsis
- class Monad m => MonadThread (m :: Type -> Type) where
- threadDelay :: Int -> m ()
- throwTo :: (Exception e, HasCallStack) => ThreadId -> e -> m ()
- getNumCapabilities :: m Int
- setNumCapabilities :: Int -> m ()
- threadCapability :: ThreadId -> m (Int, Bool)
- myThreadId :: m ThreadId
- labelThread :: ThreadId -> String -> m ()
- threadLabel :: ThreadId -> m (Maybe String)
- microsleep :: (HasCallStack, MonadThread m) => Natural -> m ()
- sleep :: (HasCallStack, MonadThread m) => Natural -> m ()
- data Natural
- data ThreadId
- class Monad m => MonadMVar (m :: Type -> Type) where
- newEmptyMVar :: m (MVar a)
- newMVar :: a -> m (MVar a)
- takeMVar :: MVar a -> m a
- putMVar :: MVar a -> a -> m ()
- tryTakeMVar :: MVar a -> m (Maybe a)
- tryPutMVar :: MVar a -> a -> m Bool
- isEmptyMVar :: MVar a -> m Bool
- withMVar :: MVar a -> (a -> m b) -> m b
- withMVarMasked :: MVar a -> (a -> m b) -> m b
- modifyMVar_ :: MVar a -> (a -> m a) -> m ()
- modifyMVar :: MVar a -> (a -> m (a, b)) -> m b
- modifyMVarMasked_ :: MVar a -> (a -> m a) -> m ()
- modifyMVarMasked :: MVar a -> (a -> m (a, b)) -> m b
- tryReadMVar :: MVar a -> m (Maybe a)
- mkWeakMVar :: MVar a -> m () -> m (Weak (MVar a))
- data MVar a
- class Monad m => MonadQSem (m :: Type -> Type) where
- class Monad m => MonadQSemN (m :: Type -> Type) where
- data QSem
- data QSemN
Thread Effect
class Monad m => MonadThread (m :: Type -> Type) where Source #
Represents thread effects.
Since: 0.1
Methods
threadDelay :: Int -> m () Source #
Lifted threadDelay.
Since: 0.1
throwTo :: (Exception e, HasCallStack) => ThreadId -> e -> m () Source #
Lifted throwTo.
Since: 0.1
getNumCapabilities :: m Int Source #
Lifted getNumCapabilities.
Since: 0.1
setNumCapabilities :: Int -> m () Source #
Lifted setNumCapabilities.
Since: 0.1
threadCapability :: ThreadId -> m (Int, Bool) Source #
Lifted threadCapability.
Since: 0.1
myThreadId :: m ThreadId Source #
Lifted myThreadId.
Since: 0.1
labelThread :: ThreadId -> String -> m () Source #
Lifted labelThread.
Since: 0.1
threadLabel :: ThreadId -> m (Maybe String) Source #
Lifted threadLabel.
Since: 0.1
Instances
| MonadThread IO Source # | Since: 0.1 |
Defined in Effects.Concurrent.Thread Methods threadDelay :: Int -> IO () Source # throwTo :: (Exception e, HasCallStack) => ThreadId -> e -> IO () Source # getNumCapabilities :: IO Int Source # setNumCapabilities :: Int -> IO () Source # threadCapability :: ThreadId -> IO (Int, Bool) Source # myThreadId :: IO ThreadId Source # | |
| MonadThread m => MonadThread (ReaderT e m) Source # | Since: 0.1 |
Defined in Effects.Concurrent.Thread Methods threadDelay :: Int -> ReaderT e m () Source # throwTo :: (Exception e0, HasCallStack) => ThreadId -> e0 -> ReaderT e m () Source # getNumCapabilities :: ReaderT e m Int Source # setNumCapabilities :: Int -> ReaderT e m () Source # threadCapability :: ThreadId -> ReaderT e m (Int, Bool) Source # myThreadId :: ReaderT e m ThreadId Source # labelThread :: ThreadId -> String -> ReaderT e m () Source # threadLabel :: ThreadId -> ReaderT e m (Maybe String) Source # | |
microsleep :: (HasCallStack, MonadThread m) => Natural -> m () Source #
threadDelay in terms of unbounded Natural rather than Int i.e.
runs sleep in the current thread for the specified number of microseconds.
Since: 0.1
sleep :: (HasCallStack, MonadThread m) => Natural -> m () Source #
Runs sleep in the current thread for the specified number of seconds.
Since: 0.1
Reexports
Natural number
Invariant: numbers <= 0xffffffffffffffff use the NS constructor
Instances
| PrintfArg Natural # | Since: base-4.8.0.0 |
Defined in Text.Printf | |
| Enum Natural # | Since: base-4.8.0.0 |
| Num Natural # | Note that Since: base-4.8.0.0 |
| Integral Natural # | Since: base-4.8.0.0 |
Defined in GHC.Internal.Real | |
| Real Natural # | Since: base-4.8.0.0 |
Defined in GHC.Internal.Real Methods toRational :: Natural -> Rational # | |
| Show Natural # | Since: base-4.8.0.0 |
| Eq Natural # | |
| Ord Natural # | |
| KnownNat n => HasResolution (n :: Nat) # | For example, |
Defined in Data.Fixed Methods resolution :: p n -> Integer # | |
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.
MVar Effect
class Monad m => MonadMVar (m :: Type -> Type) where Source #
Effect for MVar.
Since: 0.1
Methods
newEmptyMVar :: m (MVar a) Source #
Lifted newEmptyMVar.
Since: 0.1
newMVar :: a -> m (MVar a) Source #
Lifted newMVar.
Since: 0.1
takeMVar :: MVar a -> m a Source #
Lifted takeMVar.
Since: 0.1
putMVar :: MVar a -> a -> m () Source #
Lifted putMVar.
Since: 0.1
tryTakeMVar :: MVar a -> m (Maybe a) Source #
Lifted tryTakeMVar.
Since: 0.1
tryPutMVar :: MVar a -> a -> m Bool Source #
Lifted tryPutMVar.
Since: 0.1
isEmptyMVar :: MVar a -> m Bool Source #
Lifted isEmptyMVar.
Since: 0.1
withMVar :: MVar a -> (a -> m b) -> m b Source #
Lifted withMVar.
Since: 0.1
withMVarMasked :: MVar a -> (a -> m b) -> m b Source #
Lifted withMVarMasked.
Since: 0.1
modifyMVar_ :: MVar a -> (a -> m a) -> m () Source #
Lifted modifyMVar_.
Since: 0.1
modifyMVar :: MVar a -> (a -> m (a, b)) -> m b Source #
Lifted modifyMVar.
Since: 0.1
modifyMVarMasked_ :: MVar a -> (a -> m a) -> m () Source #
Lifted modifyMVarMasked_.
Since: 0.1
modifyMVarMasked :: MVar a -> (a -> m (a, b)) -> m b Source #
Lifted modifyMVarMasked.
Since: 0.1
tryReadMVar :: MVar a -> m (Maybe a) Source #
Lifted tryReadMVar.
Since: 0.1
mkWeakMVar :: MVar a -> m () -> m (Weak (MVar a)) Source #
Lifted mkWeakMVar.
Since: 0.1
Instances
Reexports
An MVar (pronounced "em-var") is a synchronising variable, used
for communication between concurrent threads. It can be thought of
as a box, which may be empty or full.
QSem Effect
class Monad m => MonadQSem (m :: Type -> Type) where Source #
Effect for QSem semaphore.
Since: 0.1
Methods
newQSem :: Int -> m QSem Source #
Lifted newQSem.
Since: 0.1
waitQSem :: QSem -> m () Source #
Lifted waitQSem.
Since: 0.1
signalQSem :: QSem -> m () Source #
Lifted signalQSem.
Since: 0.1
class Monad m => MonadQSemN (m :: Type -> Type) where Source #
Effect for QSemN semaphore.
Since: 0.1
Methods
newQSemN :: Int -> m QSemN Source #
Lifted newQSemN.
Since: 0.1
waitQSemN :: QSemN -> Int -> m () Source #
Lifted waitQSemN.
Since: 0.1
signalQSemN :: QSemN -> Int -> m () Source #
Lifted signalQSemN.
Since: 0.1
Instances
| MonadQSemN IO Source # | Since: 0.1 |
| MonadQSemN m => MonadQSemN (ReaderT e m) Source # | Since: 0.1 |