ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Coro/Coro.pm
(Generate patch)

Comparing Coro/Coro.pm (file contents):
Revision 1.139 by root, Thu Sep 27 15:52:30 2007 UTC vs.
Revision 1.141 by root, Tue Oct 2 10:38:17 2007 UTC

155 # call all destruction callbacks 155 # call all destruction callbacks
156 $_->(@{$self->{status}}) 156 $_->(@{$self->{status}})
157 for @{(delete $self->{destroy_cb}) || []}; 157 for @{(delete $self->{destroy_cb}) || []};
158} 158}
159 159
160sub _do_trace_sub {
161 &{$current->{_trace_sub_cb}}
162}
163
164sub _do_trace_line {
165 &{$current->{_trace_line_cb}}
166}
167
168# this coroutine is necessary because a coroutine 160# this coroutine is necessary because a coroutine
169# cannot destroy itself. 161# cannot destroy itself.
170my @destroy; 162my @destroy;
171my $manager; 163my $manager;
172 164
316 308
317=item terminate [arg...] 309=item terminate [arg...]
318 310
319Terminates the current coroutine with the given status values (see L<cancel>). 311Terminates the current coroutine with the given status values (see L<cancel>).
320 312
313=item killall
314
315Kills/terminates/cancels all coroutines except the currently running
316one. This is useful after a fork, either in the child or the parent, as
317usually only one of them should inherit the running coroutines.
318
321=cut 319=cut
322 320
323sub terminate { 321sub terminate {
324 $current->cancel (@_); 322 $current->cancel (@_);
323}
324
325sub killall {
326 for (Coro::State::list) {
327 $_->cancel
328 if $_ != $current && UNIVERSAL::isa $_, "Coro";
329 }
325} 330}
326 331
327=back 332=back
328 333
329# dynamic methods 334# dynamic methods

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines