--- Coro/Coro.pm 2012/12/07 23:23:15 1.314 +++ Coro/Coro.pm 2014/03/04 12:32:02 1.324 @@ -368,7 +368,7 @@ our $main; # main coro our $current; # current coro -our $VERSION = 6.23; +our $VERSION = 6.37; our @EXPORT = qw(async async_pool cede schedule terminate current unblock_sub rouse_cb rouse_wait); our %EXPORT_TAGS = ( @@ -654,14 +654,14 @@ $SIG{VTALRM} = sub { cede }; # and then start the interval timer Time::HiRes::setitimer &Time::HiRes::ITIMER_VIRTUAL, 0.01, 0.01; - }; + }; Coro::on_leave { # on leaving the thread, we stop the interval timer again Time::HiRes::setitimer &Time::HiRes::ITIMER_VIRTUAL, 0, 0; - }; + }; &{+shift}; - } + } # use like this: timeslice { @@ -669,7 +669,7 @@ # monopolise the process. Since it runs in a timesliced # environment, it will regularly cede to other threads. while () { } - }; + }; =item killall @@ -916,7 +916,7 @@ not> die, under any circumstances. There can be any number of C callbacks per coro, and there is -no way currently to remove a callback once added. +currently no way to remove a callback once added. =item $oldprio = $coro->prio ($newprio) @@ -1132,7 +1132,7 @@ my $status = wait_for_child $pid; Coro offers two functions specifically designed to make this easy, -C and C. +C and C. The first function, C, generates and returns a callback that, when invoked, will save its arguments and notify the coro that @@ -1148,9 +1148,9 @@ sub wait_for_child($) { my ($pid) = @_; - my $watcher = AnyEvent->child (pid => $pid, cb => Coro::rouse_cb); + my $watcher = AnyEvent->child (pid => $pid, cb => rouse_cb); - my ($rpid, $rstatus) = Coro::rouse_wait; + my ($rpid, $rstatus) = rouse_wait; $rstatus }