I dont know if this is the problem, but why do you issue a system
sleep....perl has a built it sleep [perldoc -f sleep]. Is perl system thread
safe on Solaris ?? Maybe you launch your threads and they are sleeping and
you dont realize it , just my 2 cents.

Mark
----- Original Message -----
From: "Phil Schaechter" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Wednesday, April 02, 2003 6:27 PM
Subject: Threads blocking on solaris


> 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]
>
>



-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to