Re: pending signal events

[email protected] (Zefram) Thu, 22 Apr 2004 08:36:07 +0100
Newsgroups perl.loop
Message-ID <[email protected]>
And a final thought before I head off on holiday: consider the event
sequence

0. start a signal watcher
1. receive a signal
2. start a second watcher for the same signal
3. send another signal
4. process events

At the moment, both watchers get events with hits=2.  The correct
behaviour would be for the first watcher to get hits=2 and the second to
get hits=1.  An asynccheck, perhaps restricted to the signal in question,
in the watcher start code would fix this.  Test program:

	#!/usr/bin/perl
	use warnings;
	use strict;
	use Event;
	Event->signal(signal => "USR1",
		cb => sub { print "handler 0 got hits=", $_[0]->hits, "\n"; });
	kill "USR1" => 0;
	Event->signal(signal => "USR1",
		cb => sub { print "handler 1 got hits=", $_[0]->hits, "\n"; });
	kill "USR1" => 0;
	Event::loop;

-zefram