ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Coro/README
Revision: 1.40
Committed: Thu Aug 31 16:28:49 2017 UTC (6 years, 8 months ago) by root
Branch: MAIN
CVS Tags: rel-6_514, rel-6_52, rel-6_53, rel-6_54, rel-6_55
Changes since 1.39: +13 -8 lines
Log Message:
6.514

File Contents

# User Rev Content
1 root 1.1 NAME
2 root 1.19 Coro - the only real threads in perl
3 root 1.1
4     SYNOPSIS
5 root 1.14 use Coro;
6 root 1.24
7     async {
8 root 1.14 # some asynchronous thread of execution
9     print "2\n";
10     cede; # yield back to main
11     print "4\n";
12     };
13     print "1\n";
14 root 1.21 cede; # yield to coro
15 root 1.14 print "3\n";
16     cede; # and again
17 root 1.24
18     # use locking
19 root 1.14 my $lock = new Coro::Semaphore;
20     my $locked;
21 root 1.24
22     $lock->down;
23 root 1.14 $locked = 1;
24     $lock->up;
25 root 1.1
26     DESCRIPTION
27 root 1.19 For a tutorial-style introduction, please read the Coro::Intro manpage.
28     This manpage mainly contains reference information.
29 root 1.1
30 root 1.19 This module collection manages continuations in general, most often in
31 root 1.21 the form of cooperative threads (also called coros, or simply "coro" in
32     the documentation). They are similar to kernel threads but don't (in
33 root 1.19 general) run in parallel at the same time even on SMP machines. The
34     specific flavor of thread offered by this module also guarantees you
35     that it will not switch between threads unless necessary, at
36     easily-identified points in your program, so locking and parallel access
37     are rarely an issue, making thread programming much safer and easier
38     than using other thread models.
39    
40     Unlike the so-called "Perl threads" (which are not actually real threads
41 root 1.26 but only the windows process emulation (see section of same name for
42 root 1.29 more details) ported to UNIX, and as such act as processes), Coro
43 root 1.26 provides a full shared address space, which makes communication between
44 root 1.29 threads very easy. And coro threads are fast, too: disabling the Windows
45     process emulation code in your perl and using Coro can easily result in
46     a two to four times speed increase for your programs. A parallel matrix
47     multiplication benchmark (very communication-intensive) runs over 300
48     times faster on a single core than perls pseudo-threads on a quad core
49     using all four cores.
50 root 1.19
51     Coro achieves that by supporting multiple running interpreters that
52     share data, which is especially useful to code pseudo-parallel processes
53     and for event-based programming, such as multiple HTTP-GET requests
54     running concurrently. See Coro::AnyEvent to learn more on how to
55     integrate Coro into an event-based environment.
56    
57     In this module, a thread is defined as "callchain + lexical variables +
58 root 1.21 some package variables + C stack), that is, a thread has its own
59     callchain, its own set of lexicals and its own set of perls most
60     important global variables (see Coro::State for more configuration and
61     background info).
62 root 1.19
63     See also the "SEE ALSO" section at the end of this document - the Coro
64     module family is quite large.
65    
66 root 1.29 CORO THREAD LIFE CYCLE
67     During the long and exciting (or not) life of a coro thread, it goes
68     through a number of states:
69    
70     1. Creation
71     The first thing in the life of a coro thread is it's creation -
72     obviously. The typical way to create a thread is to call the "async
73     BLOCK" function:
74    
75     async {
76     # thread code goes here
77     };
78    
79     You can also pass arguments, which are put in @_:
80    
81     async {
82     print $_[1]; # prints 2
83     } 1, 2, 3;
84    
85     This creates a new coro thread and puts it into the ready queue,
86     meaning it will run as soon as the CPU is free for it.
87    
88 root 1.30 "async" will return a Coro object - you can store this for future
89     reference or ignore it - a thread that is running, ready to run or
90     waiting for some event is alive on it's own.
91 root 1.29
92     Another way to create a thread is to call the "new" constructor with
93     a code-reference:
94    
95     new Coro sub {
96     # thread code goes here
97     }, @optional_arguments;
98    
99     This is quite similar to calling "async", but the important
100     difference is that the new thread is not put into the ready queue,
101     so the thread will not run until somebody puts it there. "async" is,
102     therefore, identical to this sequence:
103    
104     my $coro = new Coro sub {
105     # thread code goes here
106     };
107     $coro->ready;
108     return $coro;
109    
110     2. Startup
111     When a new coro thread is created, only a copy of the code reference
112     and the arguments are stored, no extra memory for stacks and so on
113     is allocated, keeping the coro thread in a low-memory state.
114    
115     Only when it actually starts executing will all the resources be
116     finally allocated.
117    
118     The optional arguments specified at coro creation are available in
119     @_, similar to function calls.
120    
121     3. Running / Blocking
122     A lot can happen after the coro thread has started running. Quite
123     usually, it will not run to the end in one go (because you could use
124     a function instead), but it will give up the CPU regularly because
125     it waits for external events.
126    
127 root 1.30 As long as a coro thread runs, its Coro object is available in the
128 root 1.29 global variable $Coro::current.
129    
130     The low-level way to give up the CPU is to call the scheduler, which
131     selects a new coro thread to run:
132    
133     Coro::schedule;
134    
135     Since running threads are not in the ready queue, calling the
136     scheduler without doing anything else will block the coro thread
137     forever - you need to arrange either for the coro to put woken up
138     (readied) by some other event or some other thread, or you can put
139     it into the ready queue before scheduling:
140    
141     # this is exactly what Coro::cede does
142     $Coro::current->ready;
143     Coro::schedule;
144    
145     All the higher-level synchronisation methods (Coro::Semaphore,
146     Coro::rouse_*...) are actually implemented via "->ready" and
147     "Coro::schedule".
148    
149     While the coro thread is running it also might get assigned a
150     C-level thread, or the C-level thread might be unassigned from it,
151     as the Coro runtime wishes. A C-level thread needs to be assigned
152     when your perl thread calls into some C-level function and that
153     function in turn calls perl and perl then wants to switch
154     coroutines. This happens most often when you run an event loop and
155     block in the callback, or when perl itself calls some function such
156     as "AUTOLOAD" or methods via the "tie" mechanism.
157    
158     4. Termination
159     Many threads actually terminate after some time. There are a number
160     of ways to terminate a coro thread, the simplest is returning from
161     the top-level code reference:
162    
163     async {
164     # after returning from here, the coro thread is terminated
165     };
166    
167     async {
168     return if 0.5 < rand; # terminate a little earlier, maybe
169     print "got a chance to print this\n";
170     # or here
171     };
172    
173     Any values returned from the coroutine can be recovered using
174     "->join":
175    
176     my $coro = async {
177     "hello, world\n" # return a string
178     };
179    
180     my $hello_world = $coro->join;
181    
182     print $hello_world;
183    
184     Another way to terminate is to call "Coro::terminate", which at any
185     subroutine call nesting level:
186    
187     async {
188     Coro::terminate "return value 1", "return value 2";
189     };
190    
191 root 1.32 Yet another way is to "->cancel" (or "->safe_cancel") the coro
192 root 1.30 thread from another thread:
193 root 1.29
194     my $coro = async {
195     exit 1;
196     };
197    
198 root 1.30 $coro->cancel; # also accepts values for ->join to retrieve
199 root 1.29
200     Cancellation *can* be dangerous - it's a bit like calling "exit"
201     without actually exiting, and might leave C libraries and XS modules
202     in a weird state. Unlike other thread implementations, however, Coro
203     is exceptionally safe with regards to cancellation, as perl will
204 root 1.30 always be in a consistent state, and for those cases where you want
205     to do truly marvellous things with your coro while it is being
206     cancelled - that is, make sure all cleanup code is executed from the
207     thread being cancelled - there is even a "->safe_cancel" method.
208 root 1.29
209     So, cancelling a thread that runs in an XS event loop might not be
210     the best idea, but any other combination that deals with perl only
211     (cancelling when a thread is in a "tie" method or an "AUTOLOAD" for
212     example) is safe.
213    
214 root 1.32 Last not least, a coro thread object that isn't referenced is
215     "->cancel"'ed automatically - just like other objects in Perl. This
216     is not such a common case, however - a running thread is referencedy
217     by $Coro::current, a thread ready to run is referenced by the ready
218 root 1.30 queue, a thread waiting on a lock or semaphore is referenced by
219     being in some wait list and so on. But a thread that isn't in any of
220     those queues gets cancelled:
221    
222     async {
223     schedule; # cede to other coros, don't go into the ready queue
224     };
225    
226     cede;
227     # now the async above is destroyed, as it is not referenced by anything.
228    
229 root 1.32 A slightly embellished example might make it clearer:
230    
231     async {
232     my $guard = Guard::guard { print "destroyed\n" };
233     schedule while 1;
234     };
235    
236     cede;
237    
238     Superficially one might not expect any output - since the "async"
239     implements an endless loop, the $guard will not be cleaned up.
240     However, since the thread object returned by "async" is not stored
241     anywhere, the thread is initially referenced because it is in the
242     ready queue, when it runs it is referenced by $Coro::current, but
243     when it calls "schedule", it gets "cancel"ed causing the guard
244     object to be destroyed (see the next section), and printing it's
245     message.
246    
247     If this seems a bit drastic, remember that this only happens when
248     nothing references the thread anymore, which means there is no way
249     to further execute it, ever. The only options at this point are
250     leaking the thread, or cleaning it up, which brings us to...
251    
252 root 1.29 5. Cleanup
253     Threads will allocate various resources. Most but not all will be
254     returned when a thread terminates, during clean-up.
255    
256     Cleanup is quite similar to throwing an uncaught exception: perl
257     will work it's way up through all subroutine calls and blocks. On
258     it's way, it will release all "my" variables, undo all "local"'s and
259     free any other resources truly local to the thread.
260    
261     So, a common way to free resources is to keep them referenced only
262     by my variables:
263    
264     async {
265     my $big_cache = new Cache ...;
266     };
267    
268     If there are no other references, then the $big_cache object will be
269     freed when the thread terminates, regardless of how it does so.
270    
271     What it does "NOT" do is unlock any Coro::Semaphores or similar
272     resources, but that's where the "guard" methods come in handy:
273    
274     my $sem = new Coro::Semaphore;
275    
276     async {
277     my $lock_guard = $sem->guard;
278 root 1.32 # if we return, or die or get cancelled, here,
279 root 1.29 # then the semaphore will be "up"ed.
280     };
281    
282     The "Guard::guard" function comes in handy for any custom cleanup
283 root 1.32 you might want to do (but you cannot switch to other coroutines from
284 root 1.30 those code blocks):
285 root 1.29
286     async {
287     my $window = new Gtk2::Window "toplevel";
288     # The window will not be cleaned up automatically, even when $window
289     # gets freed, so use a guard to ensure it's destruction
290     # in case of an error:
291     my $window_guard = Guard::guard { $window->destroy };
292    
293     # we are safe here
294     };
295    
296     Last not least, "local" can often be handy, too, e.g. when
297     temporarily replacing the coro thread description:
298    
299     sub myfunction {
300     local $Coro::current->{desc} = "inside myfunction(@_)";
301    
302     # if we return or die here, the description will be restored
303     }
304    
305     6. Viva La Zombie Muerte
306 root 1.30 Even after a thread has terminated and cleaned up its resources, the
307     Coro object still is there and stores the return values of the
308     thread.
309 root 1.29
310 root 1.32 When there are no other references, it will simply be cleaned up and
311     freed.
312 root 1.29
313 root 1.32 If there areany references, the Coro object will stay around, and
314     you can call "->join" as many times as you wish to retrieve the
315     result values:
316 root 1.29
317     async {
318     print "hi\n";
319     1
320     };
321    
322     # run the async above, and free everything before returning
323     # from Coro::cede:
324     Coro::cede;
325    
326     {
327     my $coro = async {
328     print "hi\n";
329     1
330     };
331    
332     # run the async above, and clean up, but do not free the coro
333     # object:
334     Coro::cede;
335    
336     # optionally retrieve the result values
337     my @results = $coro->join;
338    
339     # now $coro goes out of scope, and presumably gets freed
340     };
341    
342 root 1.19 GLOBAL VARIABLES
343 root 1.14 $Coro::main
344 root 1.21 This variable stores the Coro object that represents the main
345 root 1.31 program. While you can "ready" it and do most other things you can
346 root 1.21 do to coro, it is mainly useful to compare again $Coro::current, to
347     see whether you are running in the main program or not.
348 root 1.14
349     $Coro::current
350 root 1.21 The Coro object representing the current coro (the last coro that
351     the Coro scheduler switched to). The initial value is $Coro::main
352     (of course).
353 root 1.14
354     This variable is strictly *read-only*. You can take copies of the
355 root 1.21 value stored in it and use it as any other Coro object, but you must
356     not otherwise modify the variable itself.
357 root 1.14
358     $Coro::idle
359     This variable is mainly useful to integrate Coro into event loops.
360 root 1.19 It is usually better to rely on Coro::AnyEvent or Coro::EV, as this
361     is pretty low-level functionality.
362    
363 root 1.26 This variable stores a Coro object that is put into the ready queue
364     when there are no other ready threads (without invoking any ready
365     hooks).
366 root 1.19
367 root 1.26 The default implementation dies with "FATAL: deadlock detected.",
368     followed by a thread listing, because the program has no other way
369 root 1.21 to continue.
370    
371 root 1.19 This hook is overwritten by modules such as "Coro::EV" and
372 root 1.29 "Coro::AnyEvent" to wait on an external event that hopefully wakes
373     up a coro so the scheduler can run it.
374 root 1.1
375 root 1.26 See Coro::EV or Coro::AnyEvent for examples of using this technique.
376 root 1.1
377 root 1.21 SIMPLE CORO CREATION
378 root 1.14 async { ... } [@args...]
379 root 1.21 Create a new coro and return its Coro object (usually unused). The
380     coro will be put into the ready queue, so it will start running
381     automatically on the next scheduler run.
382 root 1.1
383 root 1.14 The first argument is a codeblock/closure that should be executed in
384 root 1.21 the coro. When it returns argument returns the coro is automatically
385     terminated.
386 root 1.1
387 root 1.14 The remaining arguments are passed as arguments to the closure.
388    
389 root 1.21 See the "Coro::State::new" constructor for info about the coro
390     environment in which coro are executed.
391 root 1.10
392 root 1.21 Calling "exit" in a coro will do the same as calling exit outside
393     the coro. Likewise, when the coro dies, the program will exit, just
394     as it would in the main program.
395 root 1.3
396 root 1.14 If you do not want that, you can provide a default "die" handler, or
397     simply avoid dieing (by use of "eval").
398    
399 root 1.21 Example: Create a new coro that just prints its arguments.
400 root 1.14
401 root 1.1 async {
402     print "@_\n";
403     } 1,2,3,4;
404    
405 root 1.6 async_pool { ... } [@args...]
406 root 1.21 Similar to "async", but uses a coro pool, so you should not call
407     terminate or join on it (although you are allowed to), and you get a
408     coro that might have executed other code already (which can be good
409     or bad :).
410 root 1.14
411 root 1.18 On the plus side, this function is about twice as fast as creating
412 root 1.21 (and destroying) a completely new coro, so if you need a lot of
413     generic coros in quick successsion, use "async_pool", not "async".
414 root 1.6
415 root 1.14 The code block is executed in an "eval" context and a warning will
416 root 1.6 be issued in case of an exception instead of terminating the
417 root 1.21 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
419 root 1.14 terminate or cancel, which somehow defeats the purpose of pooling
420     (but is fine in the exceptional case).
421 root 1.6
422 root 1.38 The priority will be reset to 0 after each run, all "swap_sv" calls
423     will be undone, tracing will be disabled, the description will be
424     reset and the default output filehandle gets restored, so you can
425     change all these. Otherwise the coro will be re-used "as-is": most
426     notably if you change other per-coro global stuff such as $/ you
427     *must needs* revert that change, which is most simply done by using
428     local as in: "local $/".
429 root 1.16
430 root 1.21 The idle pool size is limited to 8 idle coros (this can be adjusted
431     by changing $Coro::POOL_SIZE), but there can be as many non-idle
432     coros as required.
433 root 1.6
434 root 1.21 If you are concerned about pooled coros growing a lot because a
435 root 1.6 single "async_pool" used a lot of stackspace you can e.g.
436     "async_pool { terminate }" once per second or so to slowly replenish
437 root 1.9 the pool. In addition to that, when the stacks used by a handler
438 root 1.19 grows larger than 32kb (adjustable via $Coro::POOL_RSS) it will also
439 root 1.14 be destroyed.
440    
441 root 1.19 STATIC METHODS
442     Static methods are actually functions that implicitly operate on the
443 root 1.21 current coro.
444 root 1.6
445 root 1.1 schedule
446 root 1.21 Calls the scheduler. The scheduler will find the next coro that is
447     to be run from the ready queue and switches to it. The next coro to
448     be run is simply the one with the highest priority that is longest
449 root 1.26 in its ready queue. If there is no coro ready, it will call the
450 root 1.21 $Coro::idle hook.
451    
452     Please note that the current coro will *not* be put into the ready
453     queue, so calling this function usually means you will never be
454     called again unless something else (e.g. an event handler) calls
455 root 1.14 "->ready", thus waking you up.
456    
457     This makes "schedule" *the* generic method to use to block the
458 root 1.21 current coro and wait for events: first you remember the current
459     coro in a variable, then arrange for some callback of yours to call
460     "->ready" on that once some event happens, and last you call
461     "schedule" to put yourself to sleep. Note that a lot of things can
462     wake your coro up, so you need to check whether the event indeed
463     happened, e.g. by storing the status in a variable.
464 root 1.4
465 root 1.18 See HOW TO WAIT FOR A CALLBACK, below, for some ways to wait for
466     callbacks.
467 root 1.1
468     cede
469 root 1.21 "Cede" to other coros. This function puts the current coro into the
470     ready queue and calls "schedule", which has the effect of giving up
471     the current "timeslice" to other coros of the same or higher
472     priority. Once your coro gets its turn again it will automatically
473     be resumed.
474 root 1.14
475     This function is often called "yield" in other languages.
476 root 1.1
477 root 1.6 Coro::cede_notself
478 root 1.14 Works like cede, but is not exported by default and will cede to
479 root 1.21 *any* coro, regardless of priority. This is useful sometimes to
480 root 1.14 ensure progress is made.
481 root 1.6
482 root 1.1 terminate [arg...]
483 root 1.21 Terminates the current coro with the given status values (see
484 root 1.30 cancel). The values will not be copied, but referenced directly.
485 root 1.1
486 root 1.21 Coro::on_enter BLOCK, Coro::on_leave BLOCK
487     These function install enter and leave winders in the current scope.
488     The enter block will be executed when on_enter is called and
489     whenever the current coro is re-entered by the scheduler, while the
490     leave block is executed whenever the current coro is blocked by the
491     scheduler, and also when the containing scope is exited (by whatever
492     means, be it exit, die, last etc.).
493    
494     *Neither invoking the scheduler, nor exceptions, are allowed within
495     those BLOCKs*. That means: do not even think about calling "die"
496     without an eval, and do not even think of entering the scheduler in
497     any way.
498    
499     Since both BLOCKs are tied to the current scope, they will
500     automatically be removed when the current scope exits.
501    
502     These functions implement the same concept as "dynamic-wind" in
503     scheme does, and are useful when you want to localise some resource
504     to a specific coro.
505    
506 root 1.24 They slow down thread switching considerably for coros that use them
507     (about 40% for a BLOCK with a single assignment, so thread switching
508     is still reasonably fast if the handlers are fast).
509 root 1.21
510     These functions are best understood by an example: The following
511     function will change the current timezone to
512     "Antarctica/South_Pole", which requires a call to "tzset", but by
513     using "on_enter" and "on_leave", which remember/change the current
514     timezone and restore the previous value, respectively, the timezone
515 root 1.23 is only changed for the coro that installed those handlers.
516 root 1.21
517     use POSIX qw(tzset);
518    
519     async {
520     my $old_tz; # store outside TZ value here
521    
522     Coro::on_enter {
523     $old_tz = $ENV{TZ}; # remember the old value
524    
525     $ENV{TZ} = "Antarctica/South_Pole";
526     tzset; # enable new value
527     };
528    
529     Coro::on_leave {
530     $ENV{TZ} = $old_tz;
531     tzset; # restore old value
532     };
533    
534     # at this place, the timezone is Antarctica/South_Pole,
535     # without disturbing the TZ of any other coro.
536     };
537    
538     This can be used to localise about any resource (locale, uid,
539 root 1.39 current working directory etc.) to a block, despite the existence of
540 root 1.21 other coros.
541    
542 root 1.24 Another interesting example implements time-sliced multitasking
543     using interval timers (this could obviously be optimised, but does
544     the job):
545    
546     # "timeslice" the given block
547     sub timeslice(&) {
548     use Time::HiRes ();
549    
550     Coro::on_enter {
551     # on entering the thread, we set an VTALRM handler to cede
552     $SIG{VTALRM} = sub { cede };
553     # and then start the interval timer
554     Time::HiRes::setitimer &Time::HiRes::ITIMER_VIRTUAL, 0.01, 0.01;
555 root 1.33 };
556 root 1.24 Coro::on_leave {
557     # on leaving the thread, we stop the interval timer again
558     Time::HiRes::setitimer &Time::HiRes::ITIMER_VIRTUAL, 0, 0;
559 root 1.33 };
560 root 1.24
561     &{+shift};
562 root 1.33 }
563 root 1.24
564     # use like this:
565     timeslice {
566     # The following is an endless loop that would normally
567     # monopolise the process. Since it runs in a timesliced
568     # environment, it will regularly cede to other threads.
569     while () { }
570     };
571    
572 root 1.10 killall
573 root 1.21 Kills/terminates/cancels all coros except the currently running one.
574    
575     Note that while this will try to free some of the main interpreter
576     resources if the calling coro isn't the main coro, but one cannot
577     free all of them, so if a coro that is not the main coro calls this
578     function, there will be some one-time resource leak.
579    
580     CORO OBJECT METHODS
581     These are the methods you can call on coro objects (or to create them).
582 root 1.1
583     new Coro \&sub [, @args...]
584 root 1.21 Create a new coro and return it. When the sub returns, the coro
585     automatically terminates as if "terminate" with the returned values
586     were called. To make the coro run you must first put it into the
587     ready queue by calling the ready method.
588 root 1.4
589 root 1.10 See "async" and "Coro::State::new" for additional info about the
590 root 1.21 coro environment.
591 root 1.4
592 root 1.21 $success = $coro->ready
593     Put the given coro into the end of its ready queue (there is one
594     queue for each priority) and return true. If the coro is already in
595     the ready queue, do nothing and return false.
596    
597     This ensures that the scheduler will resume this coro automatically
598     once all the coro of higher priority and all coro of the same
599     priority that were put into the ready queue earlier have been
600     resumed.
601    
602 root 1.22 $coro->suspend
603     Suspends the specified coro. A suspended coro works just like any
604     other coro, except that the scheduler will not select a suspended
605     coro for execution.
606    
607     Suspending a coro can be useful when you want to keep the coro from
608     running, but you don't want to destroy it, or when you want to
609     temporarily freeze a coro (e.g. for debugging) to resume it later.
610    
611     A scenario for the former would be to suspend all (other) coros
612     after a fork and keep them alive, so their destructors aren't
613     called, but new coros can be created.
614    
615     $coro->resume
616     If the specified coro was suspended, it will be resumed. Note that
617     when the coro was in the ready queue when it was suspended, it might
618     have been unreadied by the scheduler, so an activation might have
619     been lost.
620    
621     To avoid this, it is best to put a suspended coro into the ready
622     queue unconditionally, as every synchronisation mechanism must
623     protect itself against spurious wakeups, and the one in the Coro
624     family certainly do that.
625    
626 root 1.30 $state->is_new
627     Returns true iff this Coro object is "new", i.e. has never been run
628     yet. Those states basically consist of only the code reference to
629     call and the arguments, but consumes very little other resources.
630     New states will automatically get assigned a perl interpreter when
631 root 1.39 they are transferred to.
632 root 1.30
633     $state->is_zombie
634     Returns true iff the Coro object has been cancelled, i.e. it's
635     resources freed because they were "cancel"'ed, "terminate"'d,
636     "safe_cancel"'ed or simply went out of scope.
637    
638     The name "zombie" stems from UNIX culture, where a process that has
639     exited and only stores and exit status and no other resources is
640     called a "zombie".
641    
642 root 1.21 $is_ready = $coro->is_ready
643     Returns true iff the Coro object is in the ready queue. Unless the
644     Coro object gets destroyed, it will eventually be scheduled by the
645     scheduler.
646    
647     $is_running = $coro->is_running
648     Returns true iff the Coro object is currently running. Only one Coro
649     object can ever be in the running state (but it currently is
650     possible to have multiple running Coro::States).
651    
652     $is_suspended = $coro->is_suspended
653     Returns true iff this Coro object has been suspended. Suspended
654     Coros will not ever be scheduled.
655    
656 root 1.40 $coro->cancel ($arg...)
657     Terminate the given Coro thread and make it return the given
658 root 1.30 arguments as status (default: an empty list). Never returns if the
659     Coro is the current Coro.
660    
661     This is a rather brutal way to free a coro, with some limitations -
662     if the thread is inside a C callback that doesn't expect to be
663     canceled, bad things can happen, or if the cancelled thread insists
664     on running complicated cleanup handlers that rely on its thread
665     context, things will not work.
666    
667 root 1.34 Any cleanup code being run (e.g. from "guard" blocks, destructors
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    
673     On the plus side, "->cancel" will always clean up the thread, no
674     matter what. If your cleanup code is complex or you want to avoid
675     cancelling a C-thread that doesn't know how to clean up itself, it
676     can be better to "->throw" an exception, or use "->safe_cancel".
677 root 1.30
678     The arguments to "->cancel" are not copied, but instead will be
679     referenced directly (e.g. if you pass $var and after the call change
680     that variable, then you might change the return values passed to
681     e.g. "join", so don't do that).
682    
683     The resources of the Coro are usually freed (or destructed) before
684     this call returns, but this can be delayed for an indefinite amount
685     of time, as in some cases the manager thread has to run first to
686     actually destruct the Coro object.
687    
688     $coro->safe_cancel ($arg...)
689     Works mostly like "->cancel", but is inherently "safer", and
690     consequently, can fail with an exception in cases the thread is not
691 root 1.34 in a cancellable state. Essentially, "->safe_cancel" is a "->cancel"
692     with extra checks before canceling.
693 root 1.30
694 root 1.34 It works a bit like throwing an exception that cannot be caught -
695     specifically, it will clean up the thread from within itself, so all
696     cleanup handlers (e.g. "guard" blocks) are run with full thread
697     context and can block if they wish. The downside is that there is no
698     guarantee that the thread can be cancelled when you call this
699     method, and therefore, it might fail. It is also considerably slower
700     than "cancel" or "terminate".
701 root 1.30
702 root 1.40 A thread is in a safe-cancellable state if it either has never been
703     run yet, has already been canceled/terminated or otherwise
704     destroyed, or has no C context attached and is inside an SLF
705     function.
706    
707     The first two states are trivial - a thread that hasnot started or
708     has already finished is safe to cancel.
709 root 1.30
710 root 1.40 The last state basically means that the thread isn't currently
711     inside a perl callback called from some C function (usually via some
712     XS modules) and isn't currently executing inside some C function
713     itself (via Coro's XS API).
714 root 1.30
715     This call returns true when it could cancel the thread, or croaks
716     with an error otherwise (i.e. it either returns true or doesn't
717     return at all).
718    
719     Why the weird interface? Well, there are two common models on how
720     and when to cancel things. In the first, you have the expectation
721     that your coro thread can be cancelled when you want to cancel it -
722     if the thread isn't cancellable, this would be a bug somewhere, so
723     "->safe_cancel" croaks to notify of the bug.
724    
725     In the second model you sometimes want to ask nicely to cancel a
726     thread, but if it's not a good time, well, then don't cancel. This
727     can be done relatively easy like this:
728    
729     if (! eval { $coro->safe_cancel }) {
730     warn "unable to cancel thread: $@";
731     }
732    
733     However, what you never should do is first try to cancel "safely"
734     and if that fails, cancel the "hard" way with "->cancel". That makes
735     no sense: either you rely on being able to execute cleanup code in
736     your thread context, or you don't. If you do, then "->safe_cancel"
737     is the only way, and if you don't, then "->cancel" is always faster
738     and more direct.
739 root 1.21
740     $coro->schedule_to
741     Puts the current coro to sleep (like "Coro::schedule"), but instead
742     of continuing with the next coro from the ready queue, always switch
743     to the given coro object (regardless of priority etc.). The
744     readyness state of that coro isn't changed.
745 root 1.18
746     This is an advanced method for special cases - I'd love to hear
747     about any uses for this one.
748    
749 root 1.21 $coro->cede_to
750     Like "schedule_to", but puts the current coro into the ready queue.
751     This has the effect of temporarily switching to the given coro, and
752     continuing some time later.
753 root 1.18
754     This is an advanced method for special cases - I'd love to hear
755     about any uses for this one.
756    
757 root 1.21 $coro->throw ([$scalar])
758 root 1.17 If $throw is specified and defined, it will be thrown as an
759 root 1.21 exception inside the coro at the next convenient point in time.
760 root 1.17 Otherwise clears the exception object.
761    
762 root 1.18 Coro will check for the exception each time a schedule-like-function
763     returns, i.e. after each "schedule", "cede",
764     "Coro::Semaphore->down", "Coro::Handle->readable" and so on. Most of
765 root 1.30 those functions (all that are part of Coro itself) detect this case
766     and return early in case an exception is pending.
767 root 1.18
768 root 1.17 The exception object will be thrown "as is" with the specified
769     scalar in $@, i.e. if it is a string, no line number or newline will
770     be appended (unlike with "die").
771    
772 root 1.30 This can be used as a softer means than either "cancel" or
773     "safe_cancel "to ask a coro to end itself, although there is no
774     guarantee that the exception will lead to termination, and if the
775     exception isn't caught it might well end the whole program.
776 root 1.17
777     You might also think of "throw" as being the moral equivalent of
778 root 1.21 "kill"ing a coro with a signal (in this case, a scalar).
779 root 1.17
780 root 1.21 $coro->join
781     Wait until the coro terminates and return any values given to the
782     "terminate" or "cancel" functions. "join" can be called concurrently
783 root 1.30 from multiple threads, and all will be resumed and given the status
784 root 1.21 return once the $coro terminates.
785    
786     $coro->on_destroy (\&cb)
787 root 1.28 Registers a callback that is called when this coro thread gets
788 root 1.30 destroyed, that is, after it's resources have been freed but before
789     it is joined. The callback gets passed the terminate/cancel
790     arguments, if any, and *must not* die, under any circumstances.
791 root 1.28
792 root 1.30 There can be any number of "on_destroy" callbacks per coro, and
793 root 1.33 there is currently no way to remove a callback once added.
794 root 1.21
795     $oldprio = $coro->prio ($newprio)
796 root 1.28 Sets (or gets, if the argument is missing) the priority of the coro
797     thread. Higher priority coro get run before lower priority coros.
798     Priorities are small signed integers (currently -4 .. +3), that you
799     can refer to using PRIO_xxx constants (use the import tag :prio to
800     get then):
801 root 1.1
802     PRIO_MAX > PRIO_HIGH > PRIO_NORMAL > PRIO_LOW > PRIO_IDLE > PRIO_MIN
803     3 > 1 > 0 > -1 > -3 > -4
804    
805     # set priority to HIGH
806 root 1.21 current->prio (PRIO_HIGH);
807 root 1.1
808 root 1.28 The idle coro thread ($Coro::idle) always has a lower priority than
809     any existing coro.
810 root 1.1
811 root 1.21 Changing the priority of the current coro will take effect
812 root 1.28 immediately, but changing the priority of a coro in the ready queue
813 root 1.21 (but not running) will only take effect after the next schedule (of
814     that coro). This is a bug that will be fixed in some future version.
815 root 1.1
816 root 1.21 $newprio = $coro->nice ($change)
817 root 1.1 Similar to "prio", but subtract the given value from the priority
818 root 1.28 (i.e. higher values mean lower priority, just as in UNIX's nice
819     command).
820 root 1.1
821 root 1.21 $olddesc = $coro->desc ($newdesc)
822 root 1.1 Sets (or gets in case the argument is missing) the description for
823 root 1.28 this coro thread. This is just a free-form string you can associate
824     with a coro.
825 root 1.4
826 root 1.21 This method simply sets the "$coro->{desc}" member to the given
827 root 1.28 string. You can modify this member directly if you wish, and in
828     fact, this is often preferred to indicate major processing states
829 root 1.31 that can then be seen for example in a Coro::Debug session:
830 root 1.28
831     sub my_long_function {
832     local $Coro::current->{desc} = "now in my_long_function";
833     ...
834     $Coro::current->{desc} = "my_long_function: phase 1";
835     ...
836     $Coro::current->{desc} = "my_long_function: phase 2";
837     ...
838     }
839 root 1.10
840 root 1.19 GLOBAL FUNCTIONS
841 root 1.5 Coro::nready
842 root 1.21 Returns the number of coro that are currently in the ready state,
843     i.e. that can be switched to by calling "schedule" directory or
844     indirectly. The value 0 means that the only runnable coro is the
845     currently running one, so "cede" would have no effect, and
846 root 1.14 "schedule" would cause a deadlock unless there is an idle handler
847 root 1.21 that wakes up some coro.
848 root 1.5
849 root 1.6 my $guard = Coro::guard { ... }
850 root 1.21 This function still exists, but is deprecated. Please use the
851     "Guard::guard" function instead.
852 root 1.6
853 root 1.4 unblock_sub { ... }
854     This utility function takes a BLOCK or code reference and "unblocks"
855 root 1.14 it, returning a new coderef. Unblocking means that calling the new
856     coderef will return immediately without blocking, returning nothing,
857     while the original code ref will be called (with parameters) from
858 root 1.21 within another coro.
859 root 1.4
860 root 1.8 The reason this function exists is that many event libraries (such
861 root 1.21 as the venerable Event module) are not thread-safe (a weaker form of
862     reentrancy). This means you must not block within event callbacks,
863     otherwise you might suffer from crashes or worse. The only event
864     library currently known that is safe to use without "unblock_sub" is
865 root 1.28 EV (but you might still run into deadlocks if all event loops are
866     blocked).
867 root 1.4
868 root 1.36 Coro will try to catch you when you block in the event loop ("FATAL:
869     $Coro::idle blocked itself"), but this is just best effort and only
870     works when you do not run your own event loop.
871 root 1.27
872 root 1.4 This function allows your callbacks to block by executing them in
873 root 1.21 another coro where it is safe to block. One example where blocking
874     is handy is when you use the Coro::AIO functions to save results to
875     disk, for example.
876 root 1.4
877     In short: simply use "unblock_sub { ... }" instead of "sub { ... }"
878     when creating event callbacks that want to block.
879 root 1.1
880 root 1.14 If your handler does not plan to block (e.g. simply sends a message
881 root 1.21 to another coro, or puts some other coro into the ready queue),
882     there is no reason to use "unblock_sub".
883 root 1.14
884     Note that you also need to use "unblock_sub" for any other callbacks
885     that are indirectly executed by any C-based event loop. For example,
886     when you use a module that uses AnyEvent (and you use
887     Coro::AnyEvent) and it provides callbacks that are the result of
888     some event callback, then you must not block either, or use
889     "unblock_sub".
890    
891 root 1.26 $cb = rouse_cb
892 root 1.18 Create and return a "rouse callback". That's a code reference that,
893 root 1.19 when called, will remember a copy of its arguments and notify the
894 root 1.21 owner coro of the callback.
895 root 1.18
896     See the next function.
897    
898 root 1.26 @args = rouse_wait [$cb]
899 root 1.19 Wait for the specified rouse callback (or the last one that was
900 root 1.21 created in this coro).
901 root 1.18
902 root 1.19 As soon as the callback is invoked (or when the callback was invoked
903     before "rouse_wait"), it will return the arguments originally passed
904 root 1.25 to the rouse callback. In scalar context, that means you get the
905     *last* argument, just as if "rouse_wait" had a "return ($a1, $a2,
906     $a3...)" statement at the end.
907 root 1.18
908     See the section HOW TO WAIT FOR A CALLBACK for an actual usage
909     example.
910    
911     HOW TO WAIT FOR A CALLBACK
912 root 1.21 It is very common for a coro to wait for some callback to be called.
913     This occurs naturally when you use coro in an otherwise event-based
914     program, or when you use event-based libraries.
915 root 1.18
916     These typically register a callback for some event, and call that
917 root 1.39 callback when the event occurred. In a coro, however, you typically want
918 root 1.21 to just wait for the event, simplyifying things.
919 root 1.18
920     For example "AnyEvent->child" registers a callback to be called when a
921     specific child has exited:
922    
923     my $child_watcher = AnyEvent->child (pid => $pid, cb => sub { ... });
924    
925 root 1.21 But from within a coro, you often just want to write this:
926 root 1.18
927     my $status = wait_for_child $pid;
928    
929     Coro offers two functions specifically designed to make this easy,
930 root 1.32 "rouse_cb" and "rouse_wait".
931 root 1.18
932     The first function, "rouse_cb", generates and returns a callback that,
933 root 1.21 when invoked, will save its arguments and notify the coro that created
934     the callback.
935 root 1.18
936     The second function, "rouse_wait", waits for the callback to be called
937     (by calling "schedule" to go to sleep) and returns the arguments
938     originally passed to the callback.
939    
940     Using these functions, it becomes easy to write the "wait_for_child"
941     function mentioned above:
942    
943     sub wait_for_child($) {
944     my ($pid) = @_;
945    
946 root 1.32 my $watcher = AnyEvent->child (pid => $pid, cb => rouse_cb);
947 root 1.18
948 root 1.32 my ($rpid, $rstatus) = rouse_wait;
949 root 1.18 $rstatus
950     }
951    
952     In the case where "rouse_cb" and "rouse_wait" are not flexible enough,
953 root 1.31 you can roll your own, using "schedule" and "ready":
954 root 1.18
955     sub wait_for_child($) {
956     my ($pid) = @_;
957    
958 root 1.21 # store the current coro in $current,
959 root 1.18 # and provide result variables for the closure passed to ->child
960     my $current = $Coro::current;
961     my ($done, $rstatus);
962    
963     # pass a closure to ->child
964     my $watcher = AnyEvent->child (pid => $pid, cb => sub {
965     $rstatus = $_[1]; # remember rstatus
966 root 1.31 $done = 1; # mark $rstatus as valid
967     $current->ready; # wake up the waiting thread
968 root 1.18 });
969    
970     # wait until the closure has been called
971     schedule while !$done;
972    
973     $rstatus
974     }
975    
976 root 1.1 BUGS/LIMITATIONS
977 root 1.18 fork with pthread backend
978     When Coro is compiled using the pthread backend (which isn't
979     recommended but required on many BSDs as their libcs are completely
980 root 1.21 broken), then coro will not survive a fork. There is no known
981 root 1.18 workaround except to fix your libc and use a saner backend.
982    
983     perl process emulation ("threads")
984     This module is not perl-pseudo-thread-safe. You should only ever use
985 root 1.19 this module from the first thread (this requirement might be removed
986 root 1.18 in the future to allow per-thread schedulers, but Coro::State does
987     not yet allow this). I recommend disabling thread support and using
988     processes, as having the windows process emulation enabled under
989     unix roughly halves perl performance, even when not used.
990    
991 root 1.30 Attempts to use threads created in another emulated process will
992     crash ("cleanly", with a null pointer exception).
993    
994 root 1.21 coro switching is not signal safe
995     You must not switch to another coro from within a signal handler
996     (only relevant with %SIG - most event libraries provide safe
997 root 1.27 signals), *unless* you are sure you are not interrupting a Coro
998     function.
999 root 1.18
1000     That means you *MUST NOT* call any function that might "block" the
1001 root 1.21 current coro - "cede", "schedule" "Coro::Semaphore->down" or
1002 root 1.18 anything that calls those. Everything else, including calling
1003     "ready", works.
1004 root 1.1
1005 root 1.26 WINDOWS PROCESS EMULATION
1006     A great many people seem to be confused about ithreads (for example,
1007     Chip Salzenberg called me unintelligent, incapable, stupid and gullible,
1008     while in the same mail making rather confused statements about perl
1009     ithreads (for example, that memory or files would be shared), showing
1010     his lack of understanding of this area - if it is hard to understand for
1011     Chip, it is probably not obvious to everybody).
1012    
1013     What follows is an ultra-condensed version of my talk about threads in
1014 root 1.28 scripting languages given on the perl workshop 2009:
1015 root 1.26
1016     The so-called "ithreads" were originally implemented for two reasons:
1017     first, to (badly) emulate unix processes on native win32 perls, and
1018     secondly, to replace the older, real thread model ("5.005-threads").
1019    
1020     It does that by using threads instead of OS processes. The difference
1021     between processes and threads is that threads share memory (and other
1022     state, such as files) between threads within a single process, while
1023     processes do not share anything (at least not semantically). That means
1024     that modifications done by one thread are seen by others, while
1025     modifications by one process are not seen by other processes.
1026    
1027     The "ithreads" work exactly like that: when creating a new ithreads
1028     process, all state is copied (memory is copied physically, files and
1029     code is copied logically). Afterwards, it isolates all modifications. On
1030     UNIX, the same behaviour can be achieved by using operating system
1031     processes, except that UNIX typically uses hardware built into the
1032     system to do this efficiently, while the windows process emulation
1033     emulates this hardware in software (rather efficiently, but of course it
1034     is still much slower than dedicated hardware).
1035    
1036     As mentioned before, loading code, modifying code, modifying data
1037     structures and so on is only visible in the ithreads process doing the
1038     modification, not in other ithread processes within the same OS process.
1039    
1040     This is why "ithreads" do not implement threads for perl at all, only
1041     processes. What makes it so bad is that on non-windows platforms, you
1042     can actually take advantage of custom hardware for this purpose (as
1043     evidenced by the forks module, which gives you the (i-) threads API,
1044     just much faster).
1045    
1046 root 1.39 Sharing data is in the i-threads model is done by transferring data
1047 root 1.26 structures between threads using copying semantics, which is very slow -
1048     shared data simply does not exist. Benchmarks using i-threads which are
1049     communication-intensive show extremely bad behaviour with i-threads (in
1050     fact, so bad that Coro, which cannot take direct advantage of multiple
1051     CPUs, is often orders of magnitude faster because it shares data using
1052     real threads, refer to my talk for details).
1053    
1054     As summary, i-threads *use* threads to implement processes, while the
1055     compatible forks module *uses* processes to emulate, uhm, processes.
1056     I-threads slow down every perl program when enabled, and outside of
1057     windows, serve no (or little) practical purpose, but disadvantages every
1058     single-threaded Perl program.
1059    
1060     This is the reason that I try to avoid the name "ithreads", as it is
1061     misleading as it implies that it implements some kind of thread model
1062     for perl, and prefer the name "windows process emulation", which
1063     describes the actual use and behaviour of it much better.
1064    
1065 root 1.1 SEE ALSO
1066 root 1.14 Event-Loop integration: Coro::AnyEvent, Coro::EV, Coro::Event.
1067 root 1.12
1068     Debugging: Coro::Debug.
1069    
1070     Support/Utility: Coro::Specific, Coro::Util.
1071 root 1.2
1072 root 1.19 Locking and IPC: Coro::Signal, Coro::Channel, Coro::Semaphore,
1073 root 1.2 Coro::SemaphoreSet, Coro::RWLock.
1074    
1075 root 1.19 I/O and Timers: Coro::Timer, Coro::Handle, Coro::Socket, Coro::AIO.
1076 root 1.14
1077 root 1.19 Compatibility with other modules: Coro::LWP (but see also AnyEvent::HTTP
1078     for a better-working alternative), Coro::BDB, Coro::Storable,
1079     Coro::Select.
1080 root 1.12
1081 root 1.14 XS API: Coro::MakeMaker.
1082 root 1.2
1083 root 1.19 Low level Configuration, Thread Environment, Continuations: Coro::State.
1084 root 1.1
1085 root 1.37 AUTHOR/SUPPORT/CONTACT
1086     Marc A. Lehmann <schmorp@schmorp.de>
1087     http://software.schmorp.de/pkg/Coro.html
1088 root 1.1