ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Coro/t/16_signal.t
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 ***

File Contents

# 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