> "Piers Cawley" <[EMAIL PROTECTED]> wrote
> >   Threads and Progress Monitors
> >     Dave Whipp had some more thread questions, and wondered what would be
> a
> >     good Perl 6ish way of implementing a threaded progress monitor. Whilst
> >     the discussion of all this was interesting, I'm not sure that it's
> >     really much to do with the language, more something that one would
> >     implement according to taste and the particular requirements of a
> given
> >     project.
> 
> A quick summary of what came out of it:
> 
> On the basis that perl makes simple things simple, we drilled down on the
> example of a simple progress monitor. This morphed into the question of how
> to implement a timeout:
> 
>   sub slow
>   {
>      TIMEOUT(60) { throw TimeoutException }
>      # TIMEOUT(60) { return undef but reason("timeout") }
>      ... # slow stuff, maybe calls out to 3rd-party code
>      return ...;
>   }
> 
> The implementation of the TIMEOUT macro proposed a Timer object. It was
> _assumed_ that Perl6 would provide a signaling mechanism to allow such timer
> objects to be implemented. $SIG{ALRM} probably isn't sufficient -- perhaps
> timers will actually be parrot-level concepts. Precisely how such a
> mechanism would work is unresolved.

I think it would fall trivially out of the events mechanism, which is
planned for Parrot.

Luke

> Second, it requires the timeout block to be able to kill off the mainline of
> execution, but in a way that cleans up nicely and allows execution to resume
> at the caller of the timed-out block. The more general case is that one
> thread may wish to inject an exception into another -- again, this assumes
> some form of inter-thread signaling machanism.
> 
> 
> Dave.

Reply via email to