Hello everyone, I thought I´d return to more earthly issue than discovering
bugs in signal handlers etc. :)

I´ve been looking for a way to suspend on an empty channel for only a
limited time. So I came up with a solution which involves dupChan (which
is currently broken as stated in Meurig´s bug-report) and unGetChan:

> timedReadChan ch t = do
>   dup <- dupChan ch
>   mv <- newEmptyMVar
>   forkIO (do
>     msg <- readChan dup
>     putMVar mv True
>    )
>   forkIO (do
>     threadDelay t
>     putMVar mv False
>    )
>   res <- takeMVar mv
>   if res
>      then do
>        -- we discard dup and re-read from ch:
>        msg <- readChan ch
>        return (Just msg)
>      else (return Nothing)

However, shouldn´t the dupChan be a space-leak par excellence? We end up
having no readers and keep adding new meesages to dup...
-- 
\usepackage[latin1]{inputenc}!
Volker Stolz * [EMAIL PROTECTED] * PGP + S/MIME

_______________________________________________
Glasgow-haskell-users mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to