… | |
… | |
4 | # one process produces items, send s a signal. |
4 | # one process produces items, send s a signal. |
5 | # another process waits for that signal and |
5 | # another process waits for that signal and |
6 | # consumed the item. |
6 | # consumed the item. |
7 | |
7 | |
8 | use Coro; |
8 | use Coro; |
9 | use Coro::Process; |
|
|
10 | use Coro::Signal; |
9 | use Coro::Signal; |
11 | |
10 | |
12 | my $produced = new Coro::Signal; |
11 | my $produced = new Coro::Signal; |
13 | my $consumed = new Coro::Signal; |
12 | my $consumed = new Coro::Signal; |
14 | my $finished = new Coro::Signal; |
13 | my $finished = new Coro::Signal; |
… | |
… | |
19 | $produced->send; |
18 | $produced->send; |
20 | $consumed->wait; |
19 | $consumed->wait; |
21 | } |
20 | } |
22 | print "work done\n"; |
21 | print "work done\n"; |
23 | $finished->send; |
22 | $finished->send; |
24 | $idle; |
|
|
25 | }; |
23 | }; |
26 | |
24 | |
27 | async { |
25 | async { |
28 | while () { |
26 | while () { |
29 | $produced->wait; |
27 | $produced->wait; |