別の投稿に明示的な例がある場合は、お知らせください。スレッドからのインターリーブ印刷に問題があります。すべてのスレッドで共有変数を使用してスレッドを制御しようとしています。以下の擬似コードは私のコードを強調し、問題を与えてくれます。スレッドを印刷待ちにするためにすべてを試しました。現在、わずかな出力回線しか破棄されていません。Perlスレッドが正しく印刷されない
#!/usr/bin/perl
use threads;
use threads::shared;
my $PRINTFLAG :shared = 1;
Run_Threads();
sub Do_stuff{
lock($PRINTFLAG);
cond_wait($PRINTFLAG) until $PRINTFLAG == 1;
$PRINTFLAG = 0;
print "$working\n";
$PRINTFLAG =1;
}
スレッドを生成するためのサブスレッド。
sub Run_Threads{
my @threads;
for (my $i = 1; $i <= 5; $i++){
push @threads, threads->create(\&Do_stuff);
}
foreach (@threads){
$_->join;
}
}
私はいつも「スレッド」と「正しく印刷されません」と同じ文章で私は恐怖感を感じ始めます。これは一般的に適切に行うのは難しいことです。 –