Revision: | 1.3 |
Committed: | Wed Jun 24 02:52:38 2009 UTC (15 years ago) by root |
Content type: | application/x-troff |
Branch: | MAIN |
CVS Tags: | rel-6_512, rel-6_513, rel-6_511, rel-6_09, rel-6_514, rel-6_0, rel-5_23, rel-5_24, rel-5_25, rel-6_5, rel-6_32, rel-6_33, rel-6_31, rel-6_36, rel-6_37, rel-5_162, rel-5_2, rel-6_38, rel-6_39, rel-6_10, rel-6_51, rel-6_52, rel-6_53, rel-6_54, rel-6_55, rel-6_56, rel-6_57, rel-6_03, rel-6_02, rel-5_151, rel-5_22, rel-5_15, rel-5_17, rel-5_16, rel-5_37, rel-5_36, rel-6_23, rel-6_08, rel-6_07, rel-6_06, rel-6_05, rel-6_04, rel-6_29, rel-6_28, rel-6_01, rel-6_43, rel-6_42, rel-6_41, rel-6_47, rel-6_46, rel-6_45, rel-6_44, rel-6_49, rel-6_48, rel-5_371, rel-5_372, rel-5_161, HEAD |
Changes since 1.2: | +18 -2 lines |
Log Message: | *** empty log message *** |
# | Content |
---|---|
1 | $|=1; |
2 | print "1..18\n"; |
3 | |
4 | no warnings; |
5 | use Coro; |
6 | use Coro::Signal; |
7 | |
8 | { |
9 | my $sig = new Coro::Signal; |
10 | |
11 | $as1 = async { |
12 | my $g = $sig->wait; |
13 | print "ok 3\n"; |
14 | }; |
15 | |
16 | $as2 = async { |
17 | my $g = $sig->wait; |
18 | print "ok 4\n"; |
19 | }; |
20 | |
21 | cede; # put 1, 2 in wait q |
22 | |
23 | $as3 = async { |
24 | my $g = $sig->wait; |
25 | print "ok 2\n"; |
26 | }; |
27 | |
28 | $as4 = async { |
29 | my $g = $sig->wait; |
30 | print "ok 6\n"; |
31 | }; |
32 | |
33 | $as5 = async { |
34 | my $g = $sig->wait; |
35 | print "ok 9\n"; |
36 | }; |
37 | |
38 | $sig->send; # ready 1 |
39 | $sig->send; # ready 2 |
40 | $sig->send; # remember |
41 | |
42 | print +(Coro::Semaphore::count $sig) == 1 ? "" : "not ", "ok 1\n"; |
43 | |
44 | cede; # execute 3 (already ready, no contention), 1, 2 |
45 | |
46 | print +(Coro::Semaphore::count $sig) == 0 ? "" : "not ", "ok 5\n"; |
47 | |
48 | $sig->send; |
49 | cede; |
50 | |
51 | print +(Coro::Semaphore::count $sig) == 0 ? "" : "not ", "ok 7\n"; |
52 | |
53 | $sig->broadcast; |
54 | print +(Coro::Semaphore::count $sig) == 0 ? "" : "not ", "ok 8\n"; |
55 | cede; |
56 | |
57 | $sig->wait (sub { print "ok 12\n" }); |
58 | print "ok 10\n"; |
59 | |
60 | print "ok 11\n"; |
61 | |
62 | $sig->send; |
63 | print "ok 13\n"; |
64 | cede; |
65 | |
66 | print "ok 14\n"; |
67 | $sig->send; |
68 | print "ok 15\n"; |
69 | |
70 | $sig->wait (sub { print "ok 16\n" }); |
71 | print "ok 17\n"; |
72 | |
73 | print +(Coro::Semaphore::count $sig) == 0 ? "" : "not ", "ok 18\n"; |
74 | } |
75 |