On 6/14/07, Bob McConnell <[EMAIL PROTECTED]> wrote:
snip
Assuming I can update to ActivePerl 5.8.8.820, if I set an alarm in one
forked process (thread?) before calling sysread() or sleep() on Win32,
will the same process receive the wakeup?

Looks like yes:
#!/usr/bin/perl

use strict;
use warnings;

my $pid = fork;

die "couldn't fork" unless defined $pid;

my ($name, $wait);

if ($pid) {
   ($name, $wait) = ("parent ", 10)
} else {
   ($name, $wait) = ("child ", 1)
}

print "$name" . localtime() . "\n";
eval {
   local $SIG{ALRM} = sub { die "timeout $name\n" };
   alarm $wait;
   print "$name waiting $wait seconds\n";
   while (1) {}
};
print $@ if $@;
print "$name" . localtime() . "\n";

parent Thu Jun 14 13:11:43 2007
parent  waiting 10 seconds
child Thu Jun 14 13:11:43 2007
child  waiting 1 seconds
timeout child
child Thu Jun 14 13:11:44 2007
timeout parent
parent Thu Jun 14 13:11:53 2007

Can I also send it a signal to
wake it up from another process?

In theory you should be able to use kill to send the ALRM signal to
another process.  I have not tried it.

For the next step in this project I
have to split send and receive into two threads in order to handle a
full duplex connection. The ACK/NAK can be embedded anywhere in the
incoming data stream.

Bob McConnell

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/




--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to