1

これら 2 つのサブルーチンを同時に実行しようとしています。プログラムを起動すると、次のようになります。

Perl exited with active threads:
    2 running and unjoined
    0 finished and unjoined
    0 running and detached

コンソールには何も出力されません。while(1) は SIGTERM までアクティブであることが期待されていました。

スレッド

use threads;

my $t1 = threads->create( \&sub2 );
my $t2 = threads->create( \&sub1 );

sub sub2 {
   my $dbh = get_connector();
   while (1) {
      print "Worker 2 Running";
      sleep 2;
   }
}

sub sub1 {
   while (1) {
      print "Worker 1 Running";
      sleep 1;
   }
}

ここで欠陥を見つけることができますか?

4

2 に答える 2

2

設定

$| = 1;

バッファリングされていない出力を持ち、他のスレッドが実行されている間にメインスレッドが何かを行うようにします。

sleep 1 while 1;

または@ikegamiが提案したようにスレッドを待ちます

$_->join for $t1, $t2;
于 2013-10-16T17:56:13.893 に答える