blob: f0f75da42c2d196dc98bf2d279b51b26add20d01 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
|
module Com.Simatime.Sema
( mapPool
)
where
import qualified Control.Concurrent.MSem as Sem
-- | Simaphore-based throttled 'mapConcurrently'.
mapPool :: Traversable t => Int -> (a -> IO b) -> t a -> IO (t b)
mapPool n f xs = do
sima <- Sem.new n
mapConcurrently (Sem.with sima . f) xs
|