ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Coro/README
Revision: 1.42
Committed: Wed Jul 29 13:09:19 2020 UTC (3 years, 9 months ago) by root
Branch: MAIN
CVS Tags: rel-6_57, HEAD
Changes since 1.41: +12 -3 lines
Log Message:
6.57

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 root 1.41 The first thing in the life of a coro thread is its creation -
72 root 1.29 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 root 1.41 waiting for some event is alive on its 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 root 1.41 object to be destroyed (see the next section), and printing its
245 root 1.32 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 root 1.41 will work its way up through all subroutine calls and blocks. On its
258     way, it will release all "my" variables, undo all "local"'s and free
259     any other resources truly local to the thread.
260 root 1.29
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 root 1.41 # gets freed, so use a guard to ensure its destruction
290 root 1.29 # 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 root 1.41 Returns true iff the Coro object has been cancelled, i.e. its
635 root 1.30 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.41 destroyed, that is, after its resources have been freed but before
789 root 1.30 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 root 1.42 Only the first invocation will store agruments and signal any waiter
897     - further calls will effectively be ignored, but it is ok to try.
898    
899     Also see the next function.
900 root 1.18
901 root 1.26 @args = rouse_wait [$cb]
902 root 1.42 Wait for the specified rouse callback to be invoked (or if the
903     argument is missing, use the most recently created callback in the
904     current coro).
905 root 1.18
906 root 1.19 As soon as the callback is invoked (or when the callback was invoked
907     before "rouse_wait"), it will return the arguments originally passed
908 root 1.25 to the rouse callback. In scalar context, that means you get the
909     *last* argument, just as if "rouse_wait" had a "return ($a1, $a2,
910     $a3...)" statement at the end.
911 root 1.18
912 root 1.42 You are only allowed to wait once for a given rouse callback.
913    
914 root 1.18 See the section HOW TO WAIT FOR A CALLBACK for an actual usage
915     example.
916    
917 root 1.42 As of Coro 6.57, you can reliably wait for a rouse callback in a
918     different thread than from where it was created.
919    
920 root 1.18 HOW TO WAIT FOR A CALLBACK
921 root 1.21 It is very common for a coro to wait for some callback to be called.
922     This occurs naturally when you use coro in an otherwise event-based
923     program, or when you use event-based libraries.
924 root 1.18
925     These typically register a callback for some event, and call that
926 root 1.39 callback when the event occurred. In a coro, however, you typically want
927 root 1.21 to just wait for the event, simplyifying things.
928 root 1.18
929     For example "AnyEvent->child" registers a callback to be called when a
930     specific child has exited:
931    
932     my $child_watcher = AnyEvent->child (pid => $pid, cb => sub { ... });
933    
934 root 1.21 But from within a coro, you often just want to write this:
935 root 1.18
936     my $status = wait_for_child $pid;
937    
938     Coro offers two functions specifically designed to make this easy,
939 root 1.32 "rouse_cb" and "rouse_wait".
940 root 1.18
941     The first function, "rouse_cb", generates and returns a callback that,
942 root 1.21 when invoked, will save its arguments and notify the coro that created
943     the callback.
944 root 1.18
945     The second function, "rouse_wait", waits for the callback to be called
946     (by calling "schedule" to go to sleep) and returns the arguments
947     originally passed to the callback.
948    
949     Using these functions, it becomes easy to write the "wait_for_child"
950     function mentioned above:
951    
952     sub wait_for_child($) {
953     my ($pid) = @_;
954    
955 root 1.32 my $watcher = AnyEvent->child (pid => $pid, cb => rouse_cb);
956 root 1.18
957 root 1.32 my ($rpid, $rstatus) = rouse_wait;
958 root 1.18 $rstatus
959     }
960    
961     In the case where "rouse_cb" and "rouse_wait" are not flexible enough,
962 root 1.31 you can roll your own, using "schedule" and "ready":
963 root 1.18
964     sub wait_for_child($) {
965     my ($pid) = @_;
966    
967 root 1.21 # store the current coro in $current,
968 root 1.18 # and provide result variables for the closure passed to ->child
969     my $current = $Coro::current;
970     my ($done, $rstatus);
971    
972     # pass a closure to ->child
973     my $watcher = AnyEvent->child (pid => $pid, cb => sub {
974     $rstatus = $_[1]; # remember rstatus
975 root 1.31 $done = 1; # mark $rstatus as valid
976     $current->ready; # wake up the waiting thread
977 root 1.18 });
978    
979     # wait until the closure has been called
980     schedule while !$done;
981    
982     $rstatus
983     }
984    
985 root 1.1 BUGS/LIMITATIONS
986 root 1.18 fork with pthread backend
987     When Coro is compiled using the pthread backend (which isn't
988     recommended but required on many BSDs as their libcs are completely
989 root 1.21 broken), then coro will not survive a fork. There is no known
990 root 1.18 workaround except to fix your libc and use a saner backend.
991    
992     perl process emulation ("threads")
993     This module is not perl-pseudo-thread-safe. You should only ever use
994 root 1.19 this module from the first thread (this requirement might be removed
995 root 1.18 in the future to allow per-thread schedulers, but Coro::State does
996     not yet allow this). I recommend disabling thread support and using
997     processes, as having the windows process emulation enabled under
998     unix roughly halves perl performance, even when not used.
999    
1000 root 1.30 Attempts to use threads created in another emulated process will
1001     crash ("cleanly", with a null pointer exception).
1002    
1003 root 1.21 coro switching is not signal safe
1004     You must not switch to another coro from within a signal handler
1005     (only relevant with %SIG - most event libraries provide safe
1006 root 1.27 signals), *unless* you are sure you are not interrupting a Coro
1007     function.
1008 root 1.18
1009     That means you *MUST NOT* call any function that might "block" the
1010 root 1.21 current coro - "cede", "schedule" "Coro::Semaphore->down" or
1011 root 1.18 anything that calls those. Everything else, including calling
1012     "ready", works.
1013 root 1.1
1014 root 1.26 WINDOWS PROCESS EMULATION
1015     A great many people seem to be confused about ithreads (for example,
1016     Chip Salzenberg called me unintelligent, incapable, stupid and gullible,
1017     while in the same mail making rather confused statements about perl
1018     ithreads (for example, that memory or files would be shared), showing
1019     his lack of understanding of this area - if it is hard to understand for
1020     Chip, it is probably not obvious to everybody).
1021    
1022     What follows is an ultra-condensed version of my talk about threads in
1023 root 1.28 scripting languages given on the perl workshop 2009:
1024 root 1.26
1025     The so-called "ithreads" were originally implemented for two reasons:
1026     first, to (badly) emulate unix processes on native win32 perls, and
1027     secondly, to replace the older, real thread model ("5.005-threads").
1028    
1029     It does that by using threads instead of OS processes. The difference
1030     between processes and threads is that threads share memory (and other
1031     state, such as files) between threads within a single process, while
1032     processes do not share anything (at least not semantically). That means
1033     that modifications done by one thread are seen by others, while
1034     modifications by one process are not seen by other processes.
1035    
1036     The "ithreads" work exactly like that: when creating a new ithreads
1037     process, all state is copied (memory is copied physically, files and
1038     code is copied logically). Afterwards, it isolates all modifications. On
1039     UNIX, the same behaviour can be achieved by using operating system
1040     processes, except that UNIX typically uses hardware built into the
1041     system to do this efficiently, while the windows process emulation
1042     emulates this hardware in software (rather efficiently, but of course it
1043     is still much slower than dedicated hardware).
1044    
1045     As mentioned before, loading code, modifying code, modifying data
1046     structures and so on is only visible in the ithreads process doing the
1047     modification, not in other ithread processes within the same OS process.
1048    
1049     This is why "ithreads" do not implement threads for perl at all, only
1050     processes. What makes it so bad is that on non-windows platforms, you
1051     can actually take advantage of custom hardware for this purpose (as
1052     evidenced by the forks module, which gives you the (i-) threads API,
1053     just much faster).
1054    
1055 root 1.39 Sharing data is in the i-threads model is done by transferring data
1056 root 1.26 structures between threads using copying semantics, which is very slow -
1057     shared data simply does not exist. Benchmarks using i-threads which are
1058     communication-intensive show extremely bad behaviour with i-threads (in
1059     fact, so bad that Coro, which cannot take direct advantage of multiple
1060     CPUs, is often orders of magnitude faster because it shares data using
1061     real threads, refer to my talk for details).
1062    
1063     As summary, i-threads *use* threads to implement processes, while the
1064     compatible forks module *uses* processes to emulate, uhm, processes.
1065     I-threads slow down every perl program when enabled, and outside of
1066     windows, serve no (or little) practical purpose, but disadvantages every
1067     single-threaded Perl program.
1068    
1069     This is the reason that I try to avoid the name "ithreads", as it is
1070     misleading as it implies that it implements some kind of thread model
1071     for perl, and prefer the name "windows process emulation", which
1072     describes the actual use and behaviour of it much better.
1073    
1074 root 1.1 SEE ALSO
1075 root 1.14 Event-Loop integration: Coro::AnyEvent, Coro::EV, Coro::Event.
1076 root 1.12
1077     Debugging: Coro::Debug.
1078    
1079     Support/Utility: Coro::Specific, Coro::Util.
1080 root 1.2
1081 root 1.19 Locking and IPC: Coro::Signal, Coro::Channel, Coro::Semaphore,
1082 root 1.2 Coro::SemaphoreSet, Coro::RWLock.
1083    
1084 root 1.19 I/O and Timers: Coro::Timer, Coro::Handle, Coro::Socket, Coro::AIO.
1085 root 1.14
1086 root 1.19 Compatibility with other modules: Coro::LWP (but see also AnyEvent::HTTP
1087     for a better-working alternative), Coro::BDB, Coro::Storable,
1088     Coro::Select.
1089 root 1.12
1090 root 1.14 XS API: Coro::MakeMaker.
1091 root 1.2
1092 root 1.19 Low level Configuration, Thread Environment, Continuations: Coro::State.
1093 root 1.1
1094 root 1.37 AUTHOR/SUPPORT/CONTACT
1095     Marc A. Lehmann <schmorp@schmorp.de>
1096     http://software.schmorp.de/pkg/Coro.html
1097 root 1.1