- createPool :: MonadControlIO m => IO a -> (a -> IO ()) -> Int -> (Pool a -> m b) -> m b
- createPoolCheckAlive :: MonadControlIO m => IO a -> (a -> IO ()) -> Int -> (Pool a -> m b) -> (a -> IO Bool) -> m b
- withPool :: MonadControlIO m => Pool a -> (a -> m b) -> m (Maybe b)
- withPool' :: MonadControlIO m => Pool a -> (a -> m b) -> m b
- withPoolAllocate :: MonadControlIO m => Pool a -> (a -> m b) -> m b
- data Pool a
- data PoolStats = PoolStats {}
- poolStats :: Pool a -> IO PoolStats
Using pools
createPool :: MonadControlIO m => IO a -> (a -> IO ()) -> Int -> (Pool a -> m b) -> m bSource
withPool :: MonadControlIO m => Pool a -> (a -> m b) -> m (Maybe b)Source
withPool' :: MonadControlIO m => Pool a -> (a -> m b) -> m bSource
This function throws a PoolExhaustedException
when no resources are
available. See withPoolAllocate
to avoid this.
withPoolAllocate :: MonadControlIO m => Pool a -> (a -> m b) -> m bSource
Same as withPool'
, but instead of throwing a PoolExhaustedException
when there the maximum number of resources are created and allocated, it
allocates a new resource, passes it to the subprocess and then frees it.