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 *** |
# | User | Rev | Content |
---|---|---|---|
1 | root | 1.1 | $|=1; |
2 | root | 1.3 | print "1..18\n"; |
3 | root | 1.1 | |
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 | root | 1.2 | print "ok 3\n"; |
14 | root | 1.1 | }; |
15 | |||
16 | $as2 = async { | ||
17 | my $g = $sig->wait; | ||
18 | print "ok 4\n"; | ||
19 | }; | ||
20 | |||
21 | root | 1.2 | cede; # put 1, 2 in wait q |
22 | root | 1.1 | |
23 | $as3 = async { | ||
24 | my $g = $sig->wait; | ||
25 | root | 1.2 | print "ok 2\n"; |
26 | root | 1.1 | }; |
27 | |||
28 | $as4 = async { | ||
29 | my $g = $sig->wait; | ||
30 | print "ok 6\n"; | ||
31 | }; | ||
32 | |||
33 | root | 1.2 | $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 | root | 1.1 | |
42 | print +(Coro::Semaphore::count $sig) == 1 ? "" : "not ", "ok 1\n"; | ||
43 | |||
44 | root | 1.2 | cede; # execute 3 (already ready, no contention), 1, 2 |
45 | root | 1.1 | |
46 | root | 1.2 | print +(Coro::Semaphore::count $sig) == 0 ? "" : "not ", "ok 5\n"; |
47 | root | 1.1 | |
48 | $sig->send; | ||
49 | cede; | ||
50 | |||
51 | root | 1.2 | print +(Coro::Semaphore::count $sig) == 0 ? "" : "not ", "ok 7\n"; |
52 | root | 1.1 | |
53 | $sig->broadcast; | ||
54 | root | 1.2 | print +(Coro::Semaphore::count $sig) == 0 ? "" : "not ", "ok 8\n"; |
55 | root | 1.1 | cede; |
56 | |||
57 | root | 1.3 | $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 | root | 1.1 | } |
75 |