
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