- createPool :: (MonadIO m, MonadPeelIO m) => IO a -> (a -> IO ()) -> Int -> (Pool a -> m b) -> m b
- createPoolCheckAlive :: (MonadIO m, MonadPeelIO m) => IO a -> (a -> IO ()) -> Int -> (Pool a -> m b) -> (a -> IO Bool) -> m b
- withPool :: (MonadIO m, MonadPeelIO m) => Pool a -> (a -> m b) -> m (Maybe b)
- withPool' :: (MonadIO m, MonadPeelIO m) => Pool a -> (a -> m b) -> m b
- withPoolAllocate :: MonadPeelIO m => Pool a -> (a -> m b) -> m b
- data Pool a
- data PoolStats = PoolStats {}
- poolStats :: Pool a -> IO PoolStats
Using pools
createPool :: (MonadIO m, MonadPeelIO m) => IO a -> (a -> IO ()) -> Int -> (Pool a -> m b) -> m bSource
withPool' :: (MonadIO m, MonadPeelIO m) => Pool a -> (a -> m b) -> m bSource
This function throws a PoolExhaustedException
when no resources are
available. See withPoolAllocate
to avoid this.
withPoolAllocate :: MonadPeelIO 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.