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

Comparing Coro/README (file contents):
Revision 1.33 by root, Tue Mar 4 06:13:24 2014 UTC vs.
Revision 1.38 by root, Wed Jun 22 20:24:38 2016 UTC

417 program, as "async" does. As the coro is being reused, stuff like 417 program, as "async" does. As the coro is being reused, stuff like
418 "on_destroy" will not work in the expected way, unless you call 418 "on_destroy" will not work in the expected way, unless you call
419 terminate or cancel, which somehow defeats the purpose of pooling 419 terminate or cancel, which somehow defeats the purpose of pooling
420 (but is fine in the exceptional case). 420 (but is fine in the exceptional case).
421 421
422 The priority will be reset to 0 after each run, tracing will be 422 The priority will be reset to 0 after each run, all "swap_sv" calls
423 disabled, the description will be reset and the default output 423 will be undone, tracing will be disabled, the description will be
424 filehandle gets restored, so you can change all these. Otherwise the 424 reset and the default output filehandle gets restored, so you can
425 coro will be re-used "as-is": most notably if you change other 425 change all these. Otherwise the coro will be re-used "as-is": most
426 per-coro global stuff such as $/ you *must needs* revert that 426 notably if you change other per-coro global stuff such as $/ you
427 change, which is most simply done by using local as in: "local $/". 427 *must needs* revert that change, which is most simply done by using
428 local as in: "local $/".
428 429
429 The idle pool size is limited to 8 idle coros (this can be adjusted 430 The idle pool size is limited to 8 idle coros (this can be adjusted
430 by changing $Coro::POOL_SIZE), but there can be as many non-idle 431 by changing $Coro::POOL_SIZE), but there can be as many non-idle
431 coros as required. 432 coros as required.
432 433
661 if the thread is inside a C callback that doesn't expect to be 662 if the thread is inside a C callback that doesn't expect to be
662 canceled, bad things can happen, or if the cancelled thread insists 663 canceled, bad things can happen, or if the cancelled thread insists
663 on running complicated cleanup handlers that rely on its thread 664 on running complicated cleanup handlers that rely on its thread
664 context, things will not work. 665 context, things will not work.
665 666
666 Any cleanup code being run (e.g. from "guard" blocks) will be run 667 Any cleanup code being run (e.g. from "guard" blocks, destructors
667 without a thread context, and is not allowed to switch to other 668 and so on) will be run without a thread context, and is not allowed
669 to switch to other threads. A common mistake is to call "->cancel"
670 from a destructor called by die'ing inside the thread to be
671 cancelled for example.
672
668 threads. On the plus side, "->cancel" will always clean up the 673 On the plus side, "->cancel" will always clean up the thread, no
669 thread, no matter what. If your cleanup code is complex or you want 674 matter what. If your cleanup code is complex or you want to avoid
670 to avoid cancelling a C-thread that doesn't know how to clean up 675 cancelling a C-thread that doesn't know how to clean up itself, it
671 itself, it can be better to "->throw" an exception, or use 676 can be better to "->throw" an exception, or use "->safe_cancel".
672 "->safe_cancel".
673 677
674 The arguments to "->cancel" are not copied, but instead will be 678 The arguments to "->cancel" are not copied, but instead will be
675 referenced directly (e.g. if you pass $var and after the call change 679 referenced directly (e.g. if you pass $var and after the call change
676 that variable, then you might change the return values passed to 680 that variable, then you might change the return values passed to
677 e.g. "join", so don't do that). 681 e.g. "join", so don't do that).
682 actually destruct the Coro object. 686 actually destruct the Coro object.
683 687
684 $coro->safe_cancel ($arg...) 688 $coro->safe_cancel ($arg...)
685 Works mostly like "->cancel", but is inherently "safer", and 689 Works mostly like "->cancel", but is inherently "safer", and
686 consequently, can fail with an exception in cases the thread is not 690 consequently, can fail with an exception in cases the thread is not
687 in a cancellable state. 691 in a cancellable state. Essentially, "->safe_cancel" is a "->cancel"
692 with extra checks before canceling.
688 693
689 This method works a bit like throwing an exception that cannot be 694 It works a bit like throwing an exception that cannot be caught -
690 caught - specifically, it will clean up the thread from within 695 specifically, it will clean up the thread from within itself, so all
691 itself, so all cleanup handlers (e.g. "guard" blocks) are run with 696 cleanup handlers (e.g. "guard" blocks) are run with full thread
692 full thread context and can block if they wish. The downside is that 697 context and can block if they wish. The downside is that there is no
693 there is no guarantee that the thread can be cancelled when you call 698 guarantee that the thread can be cancelled when you call this
694 this method, and therefore, it might fail. It is also considerably 699 method, and therefore, it might fail. It is also considerably slower
695 slower than "cancel" or "terminate". 700 than "cancel" or "terminate".
696 701
697 A thread is in a safe-cancellable state if it either hasn't been run 702 A thread is in a safe-cancellable state if it either hasn't been run
698 yet, or it has no C context attached and is inside an SLF function. 703 yet, or it has no C context attached and is inside an SLF function.
699 704
700 The latter two basically mean that the thread isn't currently inside 705 The latter two basically mean that the thread isn't currently inside
853 otherwise you might suffer from crashes or worse. The only event 858 otherwise you might suffer from crashes or worse. The only event
854 library currently known that is safe to use without "unblock_sub" is 859 library currently known that is safe to use without "unblock_sub" is
855 EV (but you might still run into deadlocks if all event loops are 860 EV (but you might still run into deadlocks if all event loops are
856 blocked). 861 blocked).
857 862
858 Coro will try to catch you when you block in the event loop 863 Coro will try to catch you when you block in the event loop ("FATAL:
859 ("FATAL:$Coro::IDLE blocked itself"), but this is just best effort 864 $Coro::idle blocked itself"), but this is just best effort and only
860 and only works when you do not run your own event loop. 865 works when you do not run your own event loop.
861 866
862 This function allows your callbacks to block by executing them in 867 This function allows your callbacks to block by executing them in
863 another coro where it is safe to block. One example where blocking 868 another coro where it is safe to block. One example where blocking
864 is handy is when you use the Coro::AIO functions to save results to 869 is handy is when you use the Coro::AIO functions to save results to
865 disk, for example. 870 disk, for example.
1070 1075
1071 XS API: Coro::MakeMaker. 1076 XS API: Coro::MakeMaker.
1072 1077
1073 Low level Configuration, Thread Environment, Continuations: Coro::State. 1078 Low level Configuration, Thread Environment, Continuations: Coro::State.
1074 1079
1075AUTHOR 1080AUTHOR/SUPPORT/CONTACT
1076 Marc Lehmann <schmorp@schmorp.de> 1081 Marc A. Lehmann <schmorp@schmorp.de>
1077 http://home.schmorp.de/ 1082 http://software.schmorp.de/pkg/Coro.html
1078 1083

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines