ki-unlifted-1.0.0: src/Ki/Unlifted.hs
-- | The `ki` API, generalized to use 'MonadUnliftIO'.
--
-- __Note__: See @[Ki](https://hackage.haskell.org/package/ki/docs/Ki.html)@ for the main module documentation. Any
-- documentation you see here is incidental, and only a result of re-exporting symbols directly from
-- @[Ki](https://hackage.haskell.org/package/ki/docs/Ki.html)@.
module Ki.Unlifted
( Ki.Scope,
Ki.Thread,
scoped,
fork,
forkTry,
Ki.await,
Ki.awaitAll,
fork_,
forkWith,
forkWith_,
forkTryWith,
Ki.ThreadOptions (..),
Ki.defaultThreadOptions,
Ki.ThreadAffinity (..),
Ki.ByteCount,
Ki.kilobytes,
Ki.megabytes,
)
where
import Control.Exception (Exception)
import Control.Monad.IO.Unlift (MonadUnliftIO (withRunInIO))
import Data.Void (Void)
import qualified Ki
import Prelude
fork :: forall a m. MonadUnliftIO m => Ki.Scope -> m a -> m (Ki.Thread a)
fork scope action =
withRunInIO \unlift -> Ki.fork scope (unlift action)
fork_ :: MonadUnliftIO m => Ki.Scope -> m Void -> m ()
fork_ scope action =
withRunInIO \unlift -> Ki.fork_ scope (unlift action)
forkWith :: forall a m. MonadUnliftIO m => Ki.Scope -> Ki.ThreadOptions -> m a -> m (Ki.Thread a)
forkWith scope opts action =
withRunInIO \unlift -> Ki.forkWith scope opts (unlift action)
forkWith_ :: MonadUnliftIO m => Ki.Scope -> Ki.ThreadOptions -> m Void -> m ()
forkWith_ scope opts action =
withRunInIO \unlift -> Ki.forkWith_ scope opts (unlift action)
forkTry :: (Exception e, MonadUnliftIO m) => Ki.Scope -> m a -> m (Ki.Thread (Either e a))
forkTry scope action =
withRunInIO \unlift -> Ki.forkTry scope (unlift action)
forkTryWith ::
(Exception e, MonadUnliftIO m) =>
Ki.Scope ->
Ki.ThreadOptions ->
m a ->
m (Ki.Thread (Either e a))
forkTryWith scope opts action =
withRunInIO \unlift -> Ki.forkTryWith scope opts (unlift action)
scoped :: forall a m. MonadUnliftIO m => (Ki.Scope -> m a) -> m a
scoped action =
withRunInIO \unlift -> Ki.scoped \scope -> unlift (action scope)