Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- newtype CancelToken = CancelToken Int
- newCancelToken :: IO CancelToken
- data Context = Context {}
- dummyContext :: Context
- globalContext :: Context
- data Ctx = Ctx {
- cancelTokenVar :: TVar (Maybe CancelToken)
- childrenVar :: TVar (IntMap Ctx)
- nextIdVar :: TVar Int
- onCancel :: STM ()
- newCtxSTM :: STM Ctx
- deriveCtx :: Ctx -> STM Ctx
- cancelCtx :: Ctx -> IO ()
- cancelCtxSTM :: Ctx -> CancelToken -> STM ()
- ctxCancelToken :: Ctx -> STM CancelToken
- newtype Duration = Duration (Fixed E6)
- toMicroseconds :: Duration -> Int
- microseconds :: Duration
- milliseconds :: Duration
- seconds :: Duration
- data Scope = Scope {}
- cancel :: Scope -> IO ()
- scopeCancelledSTM :: Scope -> STM (IO a)
- scopeFork :: Scope -> ((forall x. IO x -> IO x) -> IO a) -> (Either SomeException a -> IO ()) -> IO ThreadId
- scoped :: Context -> (Scope -> IO a) -> IO a
- wait :: Scope -> IO ()
- waitFor :: Scope -> Duration -> IO ()
- waitSTM :: Scope -> STM ()
- data ScopeClosing = ScopeClosing
- newtype ThreadFailed = ThreadFailed SomeException
- data Thread a = Thread !ThreadId !(STM a)
- async :: Scope -> IO a -> IO (Thread (Either SomeException a))
- asyncWithUnmask :: Scope -> ((forall x. IO x -> IO x) -> IO a) -> IO (Thread (Either SomeException a))
- await :: Thread a -> IO a
- awaitSTM :: Thread a -> STM a
- awaitFor :: Thread a -> Duration -> IO (Maybe a)
- fork :: Scope -> IO a -> IO (Thread a)
- fork_ :: Scope -> IO () -> IO ()
- forkWithUnmask :: Scope -> ((forall x. IO x -> IO x) -> IO a) -> IO (Thread a)
- forkWithUnmask_ :: Scope -> ((forall x. IO x -> IO x) -> IO ()) -> IO ()
- timeoutSTM :: Duration -> STM (IO a) -> IO a -> IO a
Documentation
newtype CancelToken Source #
A cancel token represents a request for cancellation; this request can be fulfilled by throwing the token as an exception.
Instances
Eq CancelToken Source # | |
Defined in Ki.CancelToken (==) :: CancelToken -> CancelToken -> Bool # (/=) :: CancelToken -> CancelToken -> Bool # | |
Show CancelToken Source # | |
Defined in Ki.CancelToken showsPrec :: Int -> CancelToken -> ShowS # show :: CancelToken -> String # showList :: [CancelToken] -> ShowS # | |
Exception CancelToken Source # | |
Defined in Ki.CancelToken |
Context | |
|
globalContext :: Context Source #
The global context. It cannot be cancelled.
Ctx | |
|
cancelCtxSTM :: Ctx -> CancelToken -> STM () Source #
ctxCancelToken :: Ctx -> STM CancelToken Source #
A length of time with microsecond precision. Numeric literals are treated as seconds.
Instances
Enum Duration Source # | |
Eq Duration Source # | |
Fractional Duration Source # | |
Data Duration Source # | |
Defined in Ki.Duration gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Duration -> c Duration # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Duration # toConstr :: Duration -> Constr # dataTypeOf :: Duration -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Duration) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Duration) # gmapT :: (forall b. Data b => b -> b) -> Duration -> Duration # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Duration -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Duration -> r # gmapQ :: (forall d. Data d => d -> u) -> Duration -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Duration -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Duration -> m Duration # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Duration -> m Duration # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Duration -> m Duration # | |
Num Duration Source # | |
Ord Duration Source # | |
Defined in Ki.Duration | |
Read Duration Source # | |
Real Duration Source # | |
Defined in Ki.Duration toRational :: Duration -> Rational # | |
RealFrac Duration Source # | |
Show Duration Source # | |
Generic Duration Source # | |
type Rep Duration Source # | |
toMicroseconds :: Duration -> Int Source #
microseconds :: Duration Source #
One microsecond.
milliseconds :: Duration Source #
One millisecond.
A scope delimits the lifetime of all threads created within it.
Scope | |
|
scopeFork :: Scope -> ((forall x. IO x -> IO x) -> IO a) -> (Either SomeException a -> IO ()) -> IO ThreadId Source #
waitFor :: Scope -> Duration -> IO () Source #
Variant of wait
that waits for up to the given duration.
data ScopeClosing Source #
Exception thrown by a parent thread to its children when the scope is closing.
Instances
Eq ScopeClosing Source # | |
Defined in Ki.Scope (==) :: ScopeClosing -> ScopeClosing -> Bool # (/=) :: ScopeClosing -> ScopeClosing -> Bool # | |
Show ScopeClosing Source # | |
Defined in Ki.Scope showsPrec :: Int -> ScopeClosing -> ShowS # show :: ScopeClosing -> String # showList :: [ScopeClosing] -> ShowS # | |
Exception ScopeClosing Source # | |
Defined in Ki.Scope |
newtype ThreadFailed Source #
Exception thrown by a child thread to its parent, if it fails unexpectedly.
Instances
Show ThreadFailed Source # | |
Defined in Ki.Scope showsPrec :: Int -> ThreadFailed -> ShowS # show :: ThreadFailed -> String # showList :: [ThreadFailed] -> ShowS # | |
Exception ThreadFailed Source # | |
Defined in Ki.Scope |
A running thread.
Instances
Functor Thread Source # | |
Eq (Thread a) Source # | |
Ord (Thread a) Source # | |
Generic (Thread a) Source # | |
type Rep (Thread a) Source # | |
Defined in Ki.Thread type Rep (Thread a) = D1 ('MetaData "Thread" "Ki.Thread" "ki-0.2.0-inplace" 'False) (C1 ('MetaCons "Thread" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ThreadId) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (STM a)))) |
asyncWithUnmask :: Scope -> ((forall x. IO x -> IO x) -> IO a) -> IO (Thread (Either SomeException a)) Source #
awaitFor :: Thread a -> Duration -> IO (Maybe a) Source #
Variant of await
that gives up after the given duration.
fork :: Scope -> IO a -> IO (Thread a) Source #
Create a thread within a scope.
If the thread throws an exception, the exception is immediately propagated up the call tree to the thread that opened its scope.
Throws:
- Calls
error
if the scope is closed.
forkWithUnmask_ :: Scope -> ((forall x. IO x -> IO x) -> IO ()) -> IO () Source #
Variant of forkWithUnmask
that does not return a handle to the created thread.
Throws:
- Calls
error
if the scope is closed.