source: trunk/essentials/dev-lang/perl/ext/Thread/sync2.tx

Last change on this file was 3181, checked in by bird, 18 years ago

perl 5.8.8

File size: 1.4 KB
Line 
1BEGIN {
2 eval { require Config; import Config };
3 if ($@) {
4 print "1..0 # Skip: no Config\n";
5 exit(0);
6 }
7}
8
9use Thread;
10
11$global = undef;
12
13sub single_file : locked {
14 my $who = shift;
15 my $i;
16
17 print "Uh oh: $who entered while locked by $global\n" if $global;
18 $global = $who;
19 print "[";
20 for ($i = 0; $i < int(10 * rand); $i++) {
21 print $who;
22 select(undef, undef, undef, 0.1);
23 }
24 print "]";
25 $global = undef;
26}
27
28sub start_a {
29 my ($i, $j);
30 for ($j = 0; $j < 10; $j++) {
31 single_file("A");
32 for ($i = 0; $i < int(10 * rand); $i++) {
33 print "a";
34 select(undef, undef, undef, 0.1);
35 }
36 }
37}
38
39sub start_b {
40 my ($i, $j);
41 for ($j = 0; $j < 10; $j++) {
42 single_file("B");
43 for ($i = 0; $i < int(10 * rand); $i++) {
44 print "b";
45 select(undef, undef, undef, 0.1);
46 }
47 }
48}
49
50sub start_c {
51 my ($i, $j);
52 for ($j = 0; $j < 10; $j++) {
53 single_file("C");
54 for ($i = 0; $i < int(10 * rand); $i++) {
55 print "c";
56 select(undef, undef, undef, 0.1);
57 }
58 }
59}
60
61$| = 1;
62srand($$^$^T);
63
64print <<'EOT';
65Each pair of square brackets [...] should contain a repeated sequence of
66a unique upper case letter. Lower case letters may appear randomly both
67in and out of the brackets.
68EOT
69$foo = new Thread \&start_a;
70$bar = new Thread \&start_b;
71$baz = new Thread \&start_c;
72print "\nmain: joining...\n";
73#$foo->join;
74#$bar->join;
75#$baz->join;
76print "\ndone\n";
Note: See TracBrowser for help on using the repository browser.