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

Comparing cvsroot/Coro/Coro.pm (file contents):
Revision 1.327 by root, Sun Jun 1 22:00:45 2014 UTC vs.
Revision 1.343 by root, Sun Jun 26 21:46:03 2016 UTC

366 366
367our $idle; # idle handler 367our $idle; # idle handler
368our $main; # main coro 368our $main; # main coro
369our $current; # current coro 369our $current; # current coro
370 370
371our $VERSION = 6.39; 371our $VERSION = 6.511;
372 372
373our @EXPORT = qw(async async_pool cede schedule terminate current unblock_sub rouse_cb rouse_wait); 373our @EXPORT = qw(async async_pool cede schedule terminate current unblock_sub rouse_cb rouse_wait);
374our %EXPORT_TAGS = ( 374our %EXPORT_TAGS = (
375 prio => [qw(PRIO_MAX PRIO_HIGH PRIO_NORMAL PRIO_LOW PRIO_IDLE PRIO_MIN)], 375 prio => [qw(PRIO_MAX PRIO_HIGH PRIO_NORMAL PRIO_LOW PRIO_IDLE PRIO_MIN)],
376); 376);
498C<async> does. As the coro is being reused, stuff like C<on_destroy> 498C<async> does. As the coro is being reused, stuff like C<on_destroy>
499will not work in the expected way, unless you call terminate or cancel, 499will not work in the expected way, unless you call terminate or cancel,
500which somehow defeats the purpose of pooling (but is fine in the 500which somehow defeats the purpose of pooling (but is fine in the
501exceptional case). 501exceptional case).
502 502
503The priority will be reset to C<0> after each run, tracing will be 503The priority will be reset to C<0> after each run, all C<swap_sv> calls
504disabled, the description will be reset and the default output filehandle 504will be undone, tracing will be disabled, the description will be reset
505gets restored, so you can change all these. Otherwise the coro will 505and the default output filehandle gets restored, so you can change all
506be re-used "as-is": most notably if you change other per-coro global 506these. Otherwise the coro will be re-used "as-is": most notably if you
507stuff such as C<$/> you I<must needs> revert that change, which is most 507change other per-coro global stuff such as C<$/> you I<must needs> revert
508simply done by using local as in: C<< local $/ >>. 508that change, which is most simply done by using local as in: C<< local $/
509>>.
509 510
510The idle pool size is limited to C<8> idle coros (this can be 511The idle pool size is limited to C<8> idle coros (this can be
511adjusted by changing $Coro::POOL_SIZE), but there can be as many non-idle 512adjusted by changing $Coro::POOL_SIZE), but there can be as many non-idle
512coros as required. 513coros as required.
513 514
1021otherwise you might suffer from crashes or worse. The only event library 1022otherwise you might suffer from crashes or worse. The only event library
1022currently known that is safe to use without C<unblock_sub> is L<EV> (but 1023currently known that is safe to use without C<unblock_sub> is L<EV> (but
1023you might still run into deadlocks if all event loops are blocked). 1024you might still run into deadlocks if all event loops are blocked).
1024 1025
1025Coro will try to catch you when you block in the event loop 1026Coro will try to catch you when you block in the event loop
1026("FATAL:$Coro::IDLE blocked itself"), but this is just best effort and 1027("FATAL: $Coro::idle blocked itself"), but this is just best effort and
1027only works when you do not run your own event loop. 1028only works when you do not run your own event loop.
1028 1029
1029This function allows your callbacks to block by executing them in another 1030This function allows your callbacks to block by executing them in another
1030coro where it is safe to block. One example where blocking is handy 1031coro where it is safe to block. One example where blocking is handy
1031is when you use the L<Coro::AIO|Coro::AIO> functions to save results to 1032is when you use the L<Coro::AIO|Coro::AIO> functions to save results to
1301 1302
1302XS API: L<Coro::MakeMaker>. 1303XS API: L<Coro::MakeMaker>.
1303 1304
1304Low level Configuration, Thread Environment, Continuations: L<Coro::State>. 1305Low level Configuration, Thread Environment, Continuations: L<Coro::State>.
1305 1306
1306=head1 AUTHOR 1307=head1 AUTHOR/SUPPORT/CONTACT
1307 1308
1308 Marc Lehmann <schmorp@schmorp.de> 1309 Marc A. Lehmann <schmorp@schmorp.de>
1309 http://home.schmorp.de/ 1310 http://software.schmorp.de/pkg/Coro.html
1310 1311
1311=cut 1312=cut
1312 1313

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines