Timers (was Re: [Haskell-cafe] Optimizing a high-traffic network architecture)

Tomasz Zielonka tomasz.zielonka at gmail.com
Thu Dec 15 06:08:16 EST 2005


On Thu, Dec 15, 2005 at 10:46:55AM +0000, Joel Reymont wrote:
> One idea would be to index the timer on ThreadId and name and stick  
> Nothing into the timer action once the timer has been fired/stopped.  
> Since timers are restarted with the same name quite often this would  
> just keep one relatively big map in memory. The additional ThreadId  
> would help distinguish the timers and avoid clashes.

I don't know how you use your timers, but perhaps startTimer could
return a cancel action? It's type would be

    startTimer :: Int -> (IO ()) -> IO (IO ())

and you would use it like this

    cancel <- startTimer delay action

    ...

    cancel

How cancelling was implemented would be entirely startTimer's business.

Best regards
Tomasz

-- 
I am searching for a programmer who is good at least in some of
[Haskell, ML, C++, Linux, FreeBSD, math] for work in Warsaw, Poland


More information about the Haskell-Cafe mailing list