Initial check-in of Thread module.
[p5sagit/p5-mst-13.2.git] / cond.t
1 use Thread 'fast';
2
3 sub printstuff {
4     my $count = 2000;
5     while ($count--) {
6         $lock->waituntil(sub { $inuse ? 0 : ($inuse = 1) });
7         print "A";
8         $lock->signal(sub { $inuse = 0 });
9     }
10     $lock->signal(sub { $inuse = 42 });
11 }
12
13 $|  = 1;
14 $inuse = 0;
15 $lock = new Thread::Cond;
16 $t = new Thread \&printstuff;
17 PAUSE: while (!$done) {
18     sleep 3;
19     $lock->waituntil(sub {
20         $inuse != 42 ? $inuse ? 0 : ($inuse = 1) : ($done = 1, 0)
21     });
22     last PAUSE if $done;
23     sleep 1;
24     $lock->signal(sub { $inuse = 0 });
25 }
26 print "main exiting\n";