Commit | Line | Data |
d9bb3666 |
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"; |