[Haskell-cafe] Re: Thread pool in GHC
Dinh Tien Tuan Anh
tuananhbirm at hotmail.com
Mon Sep 5 16:31:00 EDT 2005
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
>From: genneth <genneth at gmail.com>
>To: haskell-cafe at 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
>limitedThreadsWithChannelMapM lim ioaction x = do
> threadpoolcounter <- atomically ( newTVar 0 )
> mapM (throttledFork threadpoolcounter . ioaction) x
> throttledFork poolcount io = do
> atomically ( do
> prev <- readTVar poolcount
> if prev >= lim then
> else writeTVar poolcount (prev+1) )
> mvar <- newEmptyMVar
> (io >>= putMVar mvar)
> (atomically ( readTVar poolcount >>= writeTVar
>(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 at haskell.org
Winks & nudges are here - download MSN Messenger 7.0 today!
More information about the Haskell-Cafe