Hi all,
I have a very interesting problem. I have my main program waiting for data on
stdin, while other threads are running - and lauching yet more threads.
Threads block while trying to launch new threads until I hit enter. The code
below (which I whipped out quickly to demo the problem) blocks until enter is
hit on solaris, but runs fine on linux.
Does anyone have any clues for me?
Perl version I run on solaris: This is perl, v5.8.0 built for
sun4-solaris-thread-multi
Perl version I run on linux: This is perl, v5.8.0 built for
i686-linux-thread-multi
The code:
#!/usr/bin/perl
use threads;
use threads::shared;
my $key, @cmds, $new_thread;
print "> ";
while ( chop($key = <STDIN>) )
{
@cmds = split(/ /, $key);
if ( $cmds[0] eq "run" )
{
$new_thread = new threads \&monitor
}
print "> ";
}
sub monitor
{
my $self_thread = threads->self();
my $self_id = $self_thread->tid();
while (1)
{
system("sleep 15");
print "calling load_stream_starter...\n";
load_stream_starter(5);
print "Load stream starter finished\n";
}
}
sub load_stream_starter
{
my $to_start = shift;
my $i, $new_thread, $new_id;
for( $i = 0; $i < $to_start; $i++)
{
print "Preparing to launch...";
$new_thread = new threads \&run_func;
$new_id = $new_thread->tid();
print "launched $new_id\n";
}
}
sub run_func
{
while (1)
{
system("sleep 5");
print "I'm running\n";
}
}
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]