diff --git a/src/Quasar/Async/Fork.hs b/src/Quasar/Async/Fork.hs index cc35be946b3eda74969227c579ab8e4c167b9e86..3dfd70e4888b352a6457df48e08f538d684ae648 100644 --- a/src/Quasar/Async/Fork.hs +++ b/src/Quasar/Async/Fork.hs @@ -4,8 +4,8 @@ module Quasar.Async.Fork ( -- ** IO forkWithUnmask, forkWithUnmask_, - forkAsync, - forkAsyncWithUnmask, + forkFuture, + forkFutureWithUnmask, -- ** STM forkSTM, @@ -44,11 +44,11 @@ forkWithUnmaskSTM_ fn worker exChan = void $ forkWithUnmaskSTM fn worker exChan forkAsyncSTM :: forall a. IO a -> TIOWorker -> ExceptionSink -> STM (Future a) -- TODO change TIOWorker behavior for spawning threads, so no `unsafeShortIO` is necessary -forkAsyncSTM fn worker exChan = join <$> startShortIOSTM (unsafeShortIO $ forkAsync fn exChan) worker exChan +forkAsyncSTM fn worker exChan = join <$> startShortIOSTM (unsafeShortIO $ forkFuture fn exChan) worker exChan forkAsyncWithUnmaskSTM :: forall a. ((forall b. IO b -> IO b) -> IO a) -> TIOWorker -> ExceptionSink -> STM (Future a) -- TODO change TIOWorker behavior for spawning threads, so no `unsafeShortIO` is necessary -forkAsyncWithUnmaskSTM fn worker exChan = join <$> startShortIOSTM (unsafeShortIO $ forkAsyncWithUnmask fn exChan) worker exChan +forkAsyncWithUnmaskSTM fn worker exChan = join <$> startShortIOSTM (unsafeShortIO $ forkFutureWithUnmask fn exChan) worker exChan -- * Fork in IO, redirecting errors to an ExceptionSink @@ -65,11 +65,11 @@ forkWithUnmask_ fn exChan = void $ forkWithUnmask fn exChan -- * Fork in IO while collecting the result, redirecting errors to an ExceptionSink -forkAsync :: forall a. IO a -> ExceptionSink -> IO (Future a) -forkAsync fn = forkAsyncWithUnmask ($ fn) +forkFuture :: forall a. IO a -> ExceptionSink -> IO (Future a) +forkFuture fn = forkFutureWithUnmask ($ fn) -forkAsyncWithUnmask :: forall a. ((forall b. IO b -> IO b) -> IO a) -> ExceptionSink -> IO (Future a) -forkAsyncWithUnmask fn exChan = do +forkFutureWithUnmask :: forall a. ((forall b. IO b -> IO b) -> IO a) -> ExceptionSink -> IO (Future a) +forkFutureWithUnmask fn exChan = do resultVar <- newPromise forkWithUnmask_ (runAndPut resultVar) exChan pure $ toFuture resultVar diff --git a/src/Quasar/Resources.hs b/src/Quasar/Resources.hs index e3d8356fdf64243722c1c8dc0e19f30ef878b407..fec5825a06fba137d803d1d326d6c303cfacbde7 100644 --- a/src/Quasar/Resources.hs +++ b/src/Quasar/Resources.hs @@ -49,7 +49,7 @@ import Quasar.Utils.ShortIO newUnmanagedIODisposer :: IO () -> TIOWorker -> ExceptionSink -> STM Disposer -- TODO change TIOWorker behavior for spawning threads, so no `unsafeShortIO` is necessary -newUnmanagedIODisposer fn worker exChan = newUnmanagedPrimitiveDisposer (unsafeShortIO $ forkAsync fn exChan) worker exChan +newUnmanagedIODisposer fn worker exChan = newUnmanagedPrimitiveDisposer (unsafeShortIO $ forkFuture fn exChan) worker exChan newUnmanagedSTMDisposer :: STM () -> TIOWorker -> ExceptionSink -> STM Disposer newUnmanagedSTMDisposer fn worker exChan = newUnmanagedPrimitiveDisposer disposeFn worker exChan