@@ -103,6 +103,7 @@ module Streamly.Internal.Data.SVar
103 , delThread
103 , delThread
104 , modifyThread
104 , modifyThread
107 , toStreamVar
108 , toStreamVar
108 , SVarStats (..)
109 , SVarStats (..)
@@ -112,9 +113,10 @@ module Streamly.Internal.Data.SVar
114import Control.Concurrent
115import Control.Concurrent
115− (ThreadId, myThreadId, threadDelay, throwTo)
116+ (ThreadId, myThreadId, threadDelay, throwTo, forkIO)
116import Control.Concurrent.MVar
117import Control.Concurrent.MVar
117− (MVar, newEmptyMVar, tryPutMVar, takeMVar, tryTakeMVar, newMVar, tryReadMVar)
118+ (MVar, newEmptyMVar, tryPutMVar, takeMVar, tryTakeMVar, newMVar,
118import Control.Exception
120import Control.Exception
119 (SomeException(..), catch, mask, assert, Exception, catches,
121 (SomeException(..), catch, mask, assert, Exception, catches,
120 throwIO, Handler(..), BlockedIndefinitelyOnMVar(..),
122 throwIO, Handler(..), BlockedIndefinitelyOnMVar(..),
@@ -122,7 +124,8 @@ import Control.Exception
122import Control.Monad (when)
124import Control.Monad (when)
123import Control.Monad.Catch (MonadThrow)
125import Control.Monad.Catch (MonadThrow)
124import Control.Monad.IO.Class (MonadIO(..))
126import Control.Monad.IO.Class (MonadIO(..))
125−import Control.Monad.Trans.Control (MonadBaseControl, control, StM)
127+import Control.Monad.Trans.Control
128+ (MonadBaseControl, control, StM, liftBaseDiscard)
126import Streamly.Internal.Data.Atomics
129import Streamly.Internal.Data.Atomics
127 (atomicModifyIORefCAS, atomicModifyIORefCAS_, writeBarrier,
130 (atomicModifyIORefCAS, atomicModifyIORefCAS_, writeBarrier,
128 storeLoadBarrier)
131 storeLoadBarrier)
@@ -939,6 +942,10 @@ doFork action (RunInIO mrun) exHandler =
939 exHandler
942 exHandler
940 run (return tid)
943 run (return tid)
945+{-# INLINABLE fork #-}
946+fork :: MonadBaseControl IO m => m () -> m ThreadId
947+fork = liftBaseDiscard forkIO
942------------------------------------------------------------------------------
949------------------------------------------------------------------------------
943-- Collecting results from child workers in a streamed fashion
950-- Collecting results from child workers in a streamed fashion
944------------------------------------------------------------------------------
951------------------------------------------------------------------------------