I think you should break this up into two.

One is multiple timers. The other is how AIO uses the timers.

The need for timers is independent of AIO.

I see something better than the single ALRM timer a plus. I've had
to write this capablity several times. A serious flaw in the unix
design.

<chaim>

>>>>> "PRL" == Perl6 RFC Librarian <[EMAIL PROTECTED]> writes:

PRL> Timers and Timeouts

PRL> =head1 ABSTRACT

PRL> This RFC will discuss supporting multiple independent timers and
PRL> timeouts for asynchronous I/O events and exiting eval blocks.

PRL> =head1 DESCRIPTION

PRL> Currently the only asynchronous timer mechanism in Perl is the alarm
PRL> signal. It has many flaws including being delivered unsafely and that
PRL> there is only one of them (which precludes nesting calls with their own
PRL> timeouts).

PRL> Under the asynchronous I/O (AIO) system all calls which support a
PRL> callback can also have an optional timeout. This event has a simple
PRL> common set of attribute/value arguments that can be used with any AIO
PRL> call. When no activity occurs on that AIO object before the timeout
PRL> period ends, the timeout is triggered and a callback is made. When any
PRL> activity occurs, the timeout is reset to its initial period (which can
PRL> also be done with the timeout_reset method). Standalone timeouts with no
PRL> AIO object can be created for use as independent timers.

PRL> Timers can be used to break out of any AIO operation and even out of
PRL> eval blocks by having the callback execute die (or quit or whatever). So
PRL> you can nest eval blocks and have control over how long each level takes
PRL> to run. Also this means no more collisions with sharing alarm calls.

-- 
Chaim Frenkel                                        Nonlinear Knowledge, Inc.
[EMAIL PROTECTED]                                               +1-718-236-0183

Reply via email to