sync2.t

来自「UNIX下perl实现代码」· T 代码 · 共 69 行

T
69
字号
use Thread;$global = undef;sub single_file : locked {    my $who = shift;    my $i;    print "Uh oh: $who entered while locked by $global\n" if $global;    $global = $who;    print "[";    for ($i = 0; $i < int(10 * rand); $i++) {	print $who;	select(undef, undef, undef, 0.1);    }    print "]";    $global = undef;}sub start_a {    my ($i, $j);    for ($j = 0; $j < 10; $j++) {	single_file("A");	for ($i = 0; $i < int(10 * rand); $i++) {	    print "a";	    select(undef, undef, undef, 0.1);	}    }}sub start_b {    my ($i, $j);    for ($j = 0; $j < 10; $j++) {	single_file("B");	for ($i = 0; $i < int(10 * rand); $i++) {	    print "b";	    select(undef, undef, undef, 0.1);	}    }}sub start_c {    my ($i, $j);    for ($j = 0; $j < 10; $j++) {	single_file("C");	for ($i = 0; $i < int(10 * rand); $i++) {	    print "c";	    select(undef, undef, undef, 0.1);	}    }}$| = 1;srand($$^$^T);print <<'EOT';Each pair of square brackets [...] should contain a repeated sequence ofa unique upper case letter. Lower case letters may appear randomly bothin and out of the brackets.EOT$foo = new Thread \&start_a;$bar = new Thread \&start_b;$baz = new Thread \&start_c;print "\nmain: joining...\n";#$foo->join;#$bar->join;#$baz->join;print "\ndone\n";

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?