Revision: | 1.1 |
Committed: | Fri Apr 29 17:38:56 2011 UTC (13 years, 2 months 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-6_5, rel-6_32, rel-6_33, rel-6_31, rel-6_36, rel-6_37, 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-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, HEAD |
Log Message: | *** empty log message *** |
# | User | Rev | Content |
---|---|---|---|
1 | root | 1.1 | $|=1; |
2 | print "1..10\n"; | ||
3 | |||
4 | # when two coros cancel each other mutually, | ||
5 | # the slf function currently being executed needs to | ||
6 | # be cleaned up, otherwise the next slf call in the cleanup code | ||
7 | # will simply resume the previous call. | ||
8 | # in addition, mutual cancellation must be specially handled | ||
9 | # as currently, we sometimes cancel coros from another coro | ||
10 | # which must not be interrupted (see slf_init_cancel). | ||
11 | |||
12 | use Coro; | ||
13 | |||
14 | print "ok 1\n"; | ||
15 | |||
16 | my ($a, $b); | ||
17 | |||
18 | sub xyz::DESTROY { | ||
19 | print "ok 7\n"; | ||
20 | $b->cancel; | ||
21 | print "ok 8\n"; | ||
22 | } | ||
23 | |||
24 | $b = async { | ||
25 | print "ok 3\n"; | ||
26 | cede; | ||
27 | print "ok 6\n"; | ||
28 | $a->cancel; | ||
29 | print "not ok 7\n"; | ||
30 | }; | ||
31 | |||
32 | $a = async { | ||
33 | print "ok 4\n"; | ||
34 | my $x = bless \my $dummy, "xyz"; | ||
35 | cede; | ||
36 | print "not ok 5\n"; | ||
37 | }; | ||
38 | |||
39 | print "ok 2\n"; | ||
40 | cede; | ||
41 | print "ok 5\n"; | ||
42 | cede; | ||
43 | print "ok 9\n"; | ||
44 | cede; | ||
45 | print "ok 10\n"; | ||
46 |