スレッド間の標準出力をマージする

STDERRだとあまりいい感じじゃなかったので。 最初STDERR使って書いた。こんな感じ。 #!/usr/bin/perl -w use utf8; use strict; use threads; use threads::shared; my $t1v = threads->create(’t1’); my $t2v = threads->create(’t2’); while(1) { print STDERR “m”; threads->yield(); } $t1v->join; $t2v->join; sub t1 { while(1) { print STDERR “1”; threads->yield(); } } sub t2 { while(1) { print STDERR “2”; threads->yield(); } } 出力がイマイチ。で、こんな感じで書いてみた。 #!/usr/bin/perl -w use utf8; use strict; use threads; use threads::shared; $|=1; my $t1v = threads->create(’t1’); my $t2v = threads->create(’t2’); while(1) { print “m”; threads->yield(); } $t1v->join; $t2v->join; sub t1 { while(1) { print “1”; threads->yield(); } } sub t2 { while(1) { print “2”; threads->yield(); } } これでイイ感じ!自分が思っていた形になった。なぜかSTDERR使うよりもこっちのほうがいいんだよなぁ・・・なんでだろ。デバッグもしやすい!

comments powered by Disqus