Its probably too long to bring back this topic, but i have a small question.
If some threads may never terminate and have to be killed by killThread, are
they going back to the pool, or we need some twist to force them.
Thanks a lot
TuanAnh
From: genneth <[EMAIL PROTECTED]>
To: haskell-cafe@haskell.org
Subject: [Haskell-cafe] Re: Thread pool in GHC
Date: Thu, 4 Aug 2005 16:47:56 +0000 (UTC)
Dinh Tien Tuan Anh <tuananhbirm <at> hotmail.com> writes:
>
>
> Can thread pool be implemented in GHC ?
>
> I have a program that is currently using about 12-15 threads (launch and
> kill for infinite times) and when running, especially after Ctrl-C, my
> computer got freezed up. And if i ran it several times, the "Stack
> overflows" occurs.
I made the following a while back. Maybe it's useful...
limitedThreadsWithChannelMapM :: Integer -> (a -> IO b) -> [a] -> IO [MVar
b]
limitedThreadsWithChannelMapM lim ioaction x = do
threadpoolcounter <- atomically ( newTVar 0 )
mapM (throttledFork threadpoolcounter . ioaction) x
where
throttledFork poolcount io = do
atomically ( do
prev <- readTVar poolcount
if prev >= lim then
retry
else writeTVar poolcount (prev+1) )
mvar <- newEmptyMVar
forkIO(
finally
(io >>= putMVar mvar)
(atomically ( readTVar poolcount >>= writeTVar
poolcount .
(subtract 1) ) ) )
return mvar
>
> Cheers
> TuanAnh
>
> _________________________________________________________________
> Winks & nudges are here - download MSN Messenger 7.0 today!
> http://messenger.msn.co.uk
>
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
_________________________________________________________________
Winks & nudges are here - download MSN Messenger 7.0 today!
http://messenger.msn.co.uk
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe