streamly-0.10.1: Streaming, dataflow programming and declarative concurrency
Copyright(c) 2020 Composewell Technologies and Contributors
LicenseBSD-3-Clause
Maintainerstreamly@composewell.com
Stabilityexperimental
PortabilityGHC
Safe HaskellSafe-Inferred
LanguageHaskell2010

Streamly.Internal.Data.IOFinalizer.Lifted

Description

A value associated with an IO action that is automatically called whenever the value is garbage collected.

Synopsis

Documentation

newIOFinalizer :: MonadRunInIO m => m a -> m IOFinalizer Source #

Create a finalizer that calls the supplied function automatically when the it is garbage collected.

/The finalizer is always run using the state of the monad that is captured at the time of calling newFinalizer./

Note: To run it on garbage collection we have no option but to use the monad state captured at some earlier point of time. For the case when the finalizer is run manually before GC we could run it with the current state of the monad but we want to keep both the cases consistent.

Pre-release

clearingIOFinalizer :: MonadRunInIO m => IOFinalizer -> m a -> m a Source #

Run an action clearing the finalizer atomically wrt async exceptions. The action is run with async exceptions masked.

Pre-release