ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Coro/README
Revision: 1.25
Committed: Tue Jun 30 08:28:55 2009 UTC (14 years, 10 months ago) by root
Branch: MAIN
CVS Tags: rel-5_151, rel-5_161, rel-5_162, rel-5_15, rel-5_17, rel-5_16
Changes since 1.24: +3 -1 lines
Log Message:
5.15

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.15 use Coro::Semaphore;
20 root 1.14 my $lock = new Coro::Semaphore;
21     my $locked;
22 root 1.24
23     $lock->down;
24 root 1.14 $locked = 1;
25     $lock->up;
26 root 1.1
27     DESCRIPTION
28 root 1.19 For a tutorial-style introduction, please read the Coro::Intro manpage.
29     This manpage mainly contains reference information.
30 root 1.1
31 root 1.19 This module collection manages continuations in general, most often in
32 root 1.21 the form of cooperative threads (also called coros, or simply "coro" in
33     the documentation). They are similar to kernel threads but don't (in
34 root 1.19 general) run in parallel at the same time even on SMP machines. The
35     specific flavor of thread offered by this module also guarantees you
36     that it will not switch between threads unless necessary, at
37     easily-identified points in your program, so locking and parallel access
38     are rarely an issue, making thread programming much safer and easier
39     than using other thread models.
40    
41     Unlike the so-called "Perl threads" (which are not actually real threads
42 root 1.21 but only the windows process emulation ported to unix, and as such act
43     as processes), Coro provides a full shared address space, which makes
44     communication between threads very easy. And Coro's threads are fast,
45     too: disabling the Windows process emulation code in your perl and using
46     Coro can easily result in a two to four times speed increase for your
47     programs. A parallel matrix multiplication benchmark runs over 300 times
48     faster on a single core than perl's pseudo-threads on a quad core using
49     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     GLOBAL VARIABLES
67 root 1.14 $Coro::main
68 root 1.21 This variable stores the Coro object that represents the main
69 root 1.14 program. While you cna "ready" it and do most other things you can
70 root 1.21 do to coro, it is mainly useful to compare again $Coro::current, to
71     see whether you are running in the main program or not.
72 root 1.14
73     $Coro::current
74 root 1.21 The Coro object representing the current coro (the last coro that
75     the Coro scheduler switched to). The initial value is $Coro::main
76     (of course).
77 root 1.14
78     This variable is strictly *read-only*. You can take copies of the
79 root 1.21 value stored in it and use it as any other Coro object, but you must
80     not otherwise modify the variable itself.
81 root 1.14
82     $Coro::idle
83     This variable is mainly useful to integrate Coro into event loops.
84 root 1.19 It is usually better to rely on Coro::AnyEvent or Coro::EV, as this
85     is pretty low-level functionality.
86    
87 root 1.21 This variable stores either a Coro object or a callback.
88 root 1.19
89     If it is a callback, the it is called whenever the scheduler finds
90 root 1.21 no ready coros to run. The default implementation prints "FATAL:
91     deadlock detected" and exits, because the program has no other way
92     to continue.
93    
94     If it is a coro object, then this object will be readied (without
95     invoking any ready hooks, however) when the scheduler finds no other
96     ready coros to run.
97 root 1.14
98 root 1.19 This hook is overwritten by modules such as "Coro::EV" and
99 root 1.14 "Coro::AnyEvent" to wait on an external event that hopefully wake up
100 root 1.21 a coro so the scheduler can run it.
101 root 1.1
102 root 1.14 Note that the callback *must not*, under any circumstances, block
103 root 1.21 the current coro. Normally, this is achieved by having an "idle
104     coro" that calls the event loop and then blocks again, and then
105     readying that coro in the idle handler, or by simply placing the
106     idle coro in this variable.
107 root 1.4
108 root 1.14 See Coro::Event or Coro::AnyEvent for examples of using this
109     technique.
110 root 1.4
111     Please note that if your callback recursively invokes perl (e.g. for
112 root 1.12 event handlers), then it must be prepared to be called recursively
113     itself.
114 root 1.1
115 root 1.21 SIMPLE CORO CREATION
116 root 1.14 async { ... } [@args...]
117 root 1.21 Create a new coro and return its Coro object (usually unused). The
118     coro will be put into the ready queue, so it will start running
119     automatically on the next scheduler run.
120 root 1.1
121 root 1.14 The first argument is a codeblock/closure that should be executed in
122 root 1.21 the coro. When it returns argument returns the coro is automatically
123     terminated.
124 root 1.1
125 root 1.14 The remaining arguments are passed as arguments to the closure.
126    
127 root 1.21 See the "Coro::State::new" constructor for info about the coro
128     environment in which coro are executed.
129 root 1.10
130 root 1.21 Calling "exit" in a coro will do the same as calling exit outside
131     the coro. Likewise, when the coro dies, the program will exit, just
132     as it would in the main program.
133 root 1.3
134 root 1.14 If you do not want that, you can provide a default "die" handler, or
135     simply avoid dieing (by use of "eval").
136    
137 root 1.21 Example: Create a new coro that just prints its arguments.
138 root 1.14
139 root 1.1 async {
140     print "@_\n";
141     } 1,2,3,4;
142    
143 root 1.6 async_pool { ... } [@args...]
144 root 1.21 Similar to "async", but uses a coro pool, so you should not call
145     terminate or join on it (although you are allowed to), and you get a
146     coro that might have executed other code already (which can be good
147     or bad :).
148 root 1.14
149 root 1.18 On the plus side, this function is about twice as fast as creating
150 root 1.21 (and destroying) a completely new coro, so if you need a lot of
151     generic coros in quick successsion, use "async_pool", not "async".
152 root 1.6
153 root 1.14 The code block is executed in an "eval" context and a warning will
154 root 1.6 be issued in case of an exception instead of terminating the
155 root 1.21 program, as "async" does. As the coro is being reused, stuff like
156     "on_destroy" will not work in the expected way, unless you call
157 root 1.14 terminate or cancel, which somehow defeats the purpose of pooling
158     (but is fine in the exceptional case).
159 root 1.6
160 root 1.14 The priority will be reset to 0 after each run, tracing will be
161 root 1.10 disabled, the description will be reset and the default output
162 root 1.14 filehandle gets restored, so you can change all these. Otherwise the
163 root 1.21 coro will be re-used "as-is": most notably if you change other
164     per-coro global stuff such as $/ you *must needs* revert that
165 root 1.16 change, which is most simply done by using local as in: "local $/".
166    
167 root 1.21 The idle pool size is limited to 8 idle coros (this can be adjusted
168     by changing $Coro::POOL_SIZE), but there can be as many non-idle
169     coros as required.
170 root 1.6
171 root 1.21 If you are concerned about pooled coros growing a lot because a
172 root 1.6 single "async_pool" used a lot of stackspace you can e.g.
173     "async_pool { terminate }" once per second or so to slowly replenish
174 root 1.9 the pool. In addition to that, when the stacks used by a handler
175 root 1.19 grows larger than 32kb (adjustable via $Coro::POOL_RSS) it will also
176 root 1.14 be destroyed.
177    
178 root 1.19 STATIC METHODS
179     Static methods are actually functions that implicitly operate on the
180 root 1.21 current coro.
181 root 1.6
182 root 1.1 schedule
183 root 1.21 Calls the scheduler. The scheduler will find the next coro that is
184     to be run from the ready queue and switches to it. The next coro to
185     be run is simply the one with the highest priority that is longest
186     in its ready queue. If there is no coro ready, it will clal the
187     $Coro::idle hook.
188    
189     Please note that the current coro will *not* be put into the ready
190     queue, so calling this function usually means you will never be
191     called again unless something else (e.g. an event handler) calls
192 root 1.14 "->ready", thus waking you up.
193    
194     This makes "schedule" *the* generic method to use to block the
195 root 1.21 current coro and wait for events: first you remember the current
196     coro in a variable, then arrange for some callback of yours to call
197     "->ready" on that once some event happens, and last you call
198     "schedule" to put yourself to sleep. Note that a lot of things can
199     wake your coro up, so you need to check whether the event indeed
200     happened, e.g. by storing the status in a variable.
201 root 1.4
202 root 1.18 See HOW TO WAIT FOR A CALLBACK, below, for some ways to wait for
203     callbacks.
204 root 1.1
205     cede
206 root 1.21 "Cede" to other coros. This function puts the current coro into the
207     ready queue and calls "schedule", which has the effect of giving up
208     the current "timeslice" to other coros of the same or higher
209     priority. Once your coro gets its turn again it will automatically
210     be resumed.
211 root 1.14
212     This function is often called "yield" in other languages.
213 root 1.1
214 root 1.6 Coro::cede_notself
215 root 1.14 Works like cede, but is not exported by default and will cede to
216 root 1.21 *any* coro, regardless of priority. This is useful sometimes to
217 root 1.14 ensure progress is made.
218 root 1.6
219 root 1.1 terminate [arg...]
220 root 1.21 Terminates the current coro with the given status values (see
221 root 1.1 cancel).
222    
223 root 1.21 Coro::on_enter BLOCK, Coro::on_leave BLOCK
224     These function install enter and leave winders in the current scope.
225     The enter block will be executed when on_enter is called and
226     whenever the current coro is re-entered by the scheduler, while the
227     leave block is executed whenever the current coro is blocked by the
228     scheduler, and also when the containing scope is exited (by whatever
229     means, be it exit, die, last etc.).
230    
231     *Neither invoking the scheduler, nor exceptions, are allowed within
232     those BLOCKs*. That means: do not even think about calling "die"
233     without an eval, and do not even think of entering the scheduler in
234     any way.
235    
236     Since both BLOCKs are tied to the current scope, they will
237     automatically be removed when the current scope exits.
238    
239     These functions implement the same concept as "dynamic-wind" in
240     scheme does, and are useful when you want to localise some resource
241     to a specific coro.
242    
243 root 1.24 They slow down thread switching considerably for coros that use them
244     (about 40% for a BLOCK with a single assignment, so thread switching
245     is still reasonably fast if the handlers are fast).
246 root 1.21
247     These functions are best understood by an example: The following
248     function will change the current timezone to
249     "Antarctica/South_Pole", which requires a call to "tzset", but by
250     using "on_enter" and "on_leave", which remember/change the current
251     timezone and restore the previous value, respectively, the timezone
252 root 1.23 is only changed for the coro that installed those handlers.
253 root 1.21
254     use POSIX qw(tzset);
255    
256     async {
257     my $old_tz; # store outside TZ value here
258    
259     Coro::on_enter {
260     $old_tz = $ENV{TZ}; # remember the old value
261    
262     $ENV{TZ} = "Antarctica/South_Pole";
263     tzset; # enable new value
264     };
265    
266     Coro::on_leave {
267     $ENV{TZ} = $old_tz;
268     tzset; # restore old value
269     };
270    
271     # at this place, the timezone is Antarctica/South_Pole,
272     # without disturbing the TZ of any other coro.
273     };
274    
275     This can be used to localise about any resource (locale, uid,
276     current working directory etc.) to a block, despite the existance of
277     other coros.
278    
279 root 1.24 Another interesting example implements time-sliced multitasking
280     using interval timers (this could obviously be optimised, but does
281     the job):
282    
283     # "timeslice" the given block
284     sub timeslice(&) {
285     use Time::HiRes ();
286    
287     Coro::on_enter {
288     # on entering the thread, we set an VTALRM handler to cede
289     $SIG{VTALRM} = sub { cede };
290     # and then start the interval timer
291     Time::HiRes::setitimer &Time::HiRes::ITIMER_VIRTUAL, 0.01, 0.01;
292     };
293     Coro::on_leave {
294     # on leaving the thread, we stop the interval timer again
295     Time::HiRes::setitimer &Time::HiRes::ITIMER_VIRTUAL, 0, 0;
296     };
297    
298     &{+shift};
299     }
300    
301     # use like this:
302     timeslice {
303     # The following is an endless loop that would normally
304     # monopolise the process. Since it runs in a timesliced
305     # environment, it will regularly cede to other threads.
306     while () { }
307     };
308    
309 root 1.10 killall
310 root 1.21 Kills/terminates/cancels all coros except the currently running one.
311    
312     Note that while this will try to free some of the main interpreter
313     resources if the calling coro isn't the main coro, but one cannot
314     free all of them, so if a coro that is not the main coro calls this
315     function, there will be some one-time resource leak.
316    
317     CORO OBJECT METHODS
318     These are the methods you can call on coro objects (or to create them).
319 root 1.1
320     new Coro \&sub [, @args...]
321 root 1.21 Create a new coro and return it. When the sub returns, the coro
322     automatically terminates as if "terminate" with the returned values
323     were called. To make the coro run you must first put it into the
324     ready queue by calling the ready method.
325 root 1.4
326 root 1.10 See "async" and "Coro::State::new" for additional info about the
327 root 1.21 coro environment.
328 root 1.4
329 root 1.21 $success = $coro->ready
330     Put the given coro into the end of its ready queue (there is one
331     queue for each priority) and return true. If the coro is already in
332     the ready queue, do nothing and return false.
333    
334     This ensures that the scheduler will resume this coro automatically
335     once all the coro of higher priority and all coro of the same
336     priority that were put into the ready queue earlier have been
337     resumed.
338    
339 root 1.22 $coro->suspend
340     Suspends the specified coro. A suspended coro works just like any
341     other coro, except that the scheduler will not select a suspended
342     coro for execution.
343    
344     Suspending a coro can be useful when you want to keep the coro from
345     running, but you don't want to destroy it, or when you want to
346     temporarily freeze a coro (e.g. for debugging) to resume it later.
347    
348     A scenario for the former would be to suspend all (other) coros
349     after a fork and keep them alive, so their destructors aren't
350     called, but new coros can be created.
351    
352     $coro->resume
353     If the specified coro was suspended, it will be resumed. Note that
354     when the coro was in the ready queue when it was suspended, it might
355     have been unreadied by the scheduler, so an activation might have
356     been lost.
357    
358     To avoid this, it is best to put a suspended coro into the ready
359     queue unconditionally, as every synchronisation mechanism must
360     protect itself against spurious wakeups, and the one in the Coro
361     family certainly do that.
362    
363 root 1.21 $is_ready = $coro->is_ready
364     Returns true iff the Coro object is in the ready queue. Unless the
365     Coro object gets destroyed, it will eventually be scheduled by the
366     scheduler.
367    
368     $is_running = $coro->is_running
369     Returns true iff the Coro object is currently running. Only one Coro
370     object can ever be in the running state (but it currently is
371     possible to have multiple running Coro::States).
372    
373     $is_suspended = $coro->is_suspended
374     Returns true iff this Coro object has been suspended. Suspended
375     Coros will not ever be scheduled.
376    
377     $coro->cancel (arg...)
378     Terminates the given Coro and makes it return the given arguments as
379     status (default: the empty list). Never returns if the Coro is the
380     current Coro.
381    
382     $coro->schedule_to
383     Puts the current coro to sleep (like "Coro::schedule"), but instead
384     of continuing with the next coro from the ready queue, always switch
385     to the given coro object (regardless of priority etc.). The
386     readyness state of that coro isn't changed.
387 root 1.18
388     This is an advanced method for special cases - I'd love to hear
389     about any uses for this one.
390    
391 root 1.21 $coro->cede_to
392     Like "schedule_to", but puts the current coro into the ready queue.
393     This has the effect of temporarily switching to the given coro, and
394     continuing some time later.
395 root 1.18
396     This is an advanced method for special cases - I'd love to hear
397     about any uses for this one.
398    
399 root 1.21 $coro->throw ([$scalar])
400 root 1.17 If $throw is specified and defined, it will be thrown as an
401 root 1.21 exception inside the coro at the next convenient point in time.
402 root 1.17 Otherwise clears the exception object.
403    
404 root 1.18 Coro will check for the exception each time a schedule-like-function
405     returns, i.e. after each "schedule", "cede",
406     "Coro::Semaphore->down", "Coro::Handle->readable" and so on. Most of
407     these functions detect this case and return early in case an
408     exception is pending.
409    
410 root 1.17 The exception object will be thrown "as is" with the specified
411     scalar in $@, i.e. if it is a string, no line number or newline will
412     be appended (unlike with "die").
413    
414 root 1.21 This can be used as a softer means than "cancel" to ask a coro to
415     end itself, although there is no guarantee that the exception will
416     lead to termination, and if the exception isn't caught it might well
417     end the whole program.
418 root 1.17
419     You might also think of "throw" as being the moral equivalent of
420 root 1.21 "kill"ing a coro with a signal (in this case, a scalar).
421 root 1.17
422 root 1.21 $coro->join
423     Wait until the coro terminates and return any values given to the
424     "terminate" or "cancel" functions. "join" can be called concurrently
425     from multiple coro, and all will be resumed and given the status
426     return once the $coro terminates.
427    
428     $coro->on_destroy (\&cb)
429     Registers a callback that is called when this coro gets destroyed,
430     but before it is joined. The callback gets passed the terminate
431     arguments, if any, and *must not* die, under any circumstances.
432    
433     $oldprio = $coro->prio ($newprio)
434     Sets (or gets, if the argument is missing) the priority of the coro.
435     Higher priority coro get run before lower priority coro. Priorities
436     are small signed integers (currently -4 .. +3), that you can refer
437     to using PRIO_xxx constants (use the import tag :prio to get then):
438 root 1.1
439     PRIO_MAX > PRIO_HIGH > PRIO_NORMAL > PRIO_LOW > PRIO_IDLE > PRIO_MIN
440     3 > 1 > 0 > -1 > -3 > -4
441    
442     # set priority to HIGH
443 root 1.21 current->prio (PRIO_HIGH);
444 root 1.1
445 root 1.21 The idle coro ($Coro::idle) always has a lower priority than any
446     existing coro.
447 root 1.1
448 root 1.21 Changing the priority of the current coro will take effect
449     immediately, but changing the priority of coro in the ready queue
450     (but not running) will only take effect after the next schedule (of
451     that coro). This is a bug that will be fixed in some future version.
452 root 1.1
453 root 1.21 $newprio = $coro->nice ($change)
454 root 1.1 Similar to "prio", but subtract the given value from the priority
455     (i.e. higher values mean lower priority, just as in unix).
456    
457 root 1.21 $olddesc = $coro->desc ($newdesc)
458 root 1.1 Sets (or gets in case the argument is missing) the description for
459 root 1.21 this coro. This is just a free-form string you can associate with a
460     coro.
461 root 1.4
462 root 1.21 This method simply sets the "$coro->{desc}" member to the given
463 root 1.10 string. You can modify this member directly if you wish.
464    
465 root 1.19 GLOBAL FUNCTIONS
466 root 1.5 Coro::nready
467 root 1.21 Returns the number of coro that are currently in the ready state,
468     i.e. that can be switched to by calling "schedule" directory or
469     indirectly. The value 0 means that the only runnable coro is the
470     currently running one, so "cede" would have no effect, and
471 root 1.14 "schedule" would cause a deadlock unless there is an idle handler
472 root 1.21 that wakes up some coro.
473 root 1.5
474 root 1.6 my $guard = Coro::guard { ... }
475 root 1.21 This function still exists, but is deprecated. Please use the
476     "Guard::guard" function instead.
477 root 1.6
478 root 1.4 unblock_sub { ... }
479     This utility function takes a BLOCK or code reference and "unblocks"
480 root 1.14 it, returning a new coderef. Unblocking means that calling the new
481     coderef will return immediately without blocking, returning nothing,
482     while the original code ref will be called (with parameters) from
483 root 1.21 within another coro.
484 root 1.4
485 root 1.8 The reason this function exists is that many event libraries (such
486 root 1.21 as the venerable Event module) are not thread-safe (a weaker form of
487     reentrancy). This means you must not block within event callbacks,
488     otherwise you might suffer from crashes or worse. The only event
489     library currently known that is safe to use without "unblock_sub" is
490     EV.
491 root 1.4
492     This function allows your callbacks to block by executing them in
493 root 1.21 another coro where it is safe to block. One example where blocking
494     is handy is when you use the Coro::AIO functions to save results to
495     disk, for example.
496 root 1.4
497     In short: simply use "unblock_sub { ... }" instead of "sub { ... }"
498     when creating event callbacks that want to block.
499 root 1.1
500 root 1.14 If your handler does not plan to block (e.g. simply sends a message
501 root 1.21 to another coro, or puts some other coro into the ready queue),
502     there is no reason to use "unblock_sub".
503 root 1.14
504     Note that you also need to use "unblock_sub" for any other callbacks
505     that are indirectly executed by any C-based event loop. For example,
506     when you use a module that uses AnyEvent (and you use
507     Coro::AnyEvent) and it provides callbacks that are the result of
508     some event callback, then you must not block either, or use
509     "unblock_sub".
510    
511 root 1.18 $cb = Coro::rouse_cb
512     Create and return a "rouse callback". That's a code reference that,
513 root 1.19 when called, will remember a copy of its arguments and notify the
514 root 1.21 owner coro of the callback.
515 root 1.18
516     See the next function.
517    
518     @args = Coro::rouse_wait [$cb]
519 root 1.19 Wait for the specified rouse callback (or the last one that was
520 root 1.21 created in this coro).
521 root 1.18
522 root 1.19 As soon as the callback is invoked (or when the callback was invoked
523     before "rouse_wait"), it will return the arguments originally passed
524 root 1.25 to the rouse callback. In scalar context, that means you get the
525     *last* argument, just as if "rouse_wait" had a "return ($a1, $a2,
526     $a3...)" statement at the end.
527 root 1.18
528     See the section HOW TO WAIT FOR A CALLBACK for an actual usage
529     example.
530    
531     HOW TO WAIT FOR A CALLBACK
532 root 1.21 It is very common for a coro to wait for some callback to be called.
533     This occurs naturally when you use coro in an otherwise event-based
534     program, or when you use event-based libraries.
535 root 1.18
536     These typically register a callback for some event, and call that
537 root 1.21 callback when the event occured. In a coro, however, you typically want
538     to just wait for the event, simplyifying things.
539 root 1.18
540     For example "AnyEvent->child" registers a callback to be called when a
541     specific child has exited:
542    
543     my $child_watcher = AnyEvent->child (pid => $pid, cb => sub { ... });
544    
545 root 1.21 But from within a coro, you often just want to write this:
546 root 1.18
547     my $status = wait_for_child $pid;
548    
549     Coro offers two functions specifically designed to make this easy,
550     "Coro::rouse_cb" and "Coro::rouse_wait".
551    
552     The first function, "rouse_cb", generates and returns a callback that,
553 root 1.21 when invoked, will save its arguments and notify the coro that created
554     the callback.
555 root 1.18
556     The second function, "rouse_wait", waits for the callback to be called
557     (by calling "schedule" to go to sleep) and returns the arguments
558     originally passed to the callback.
559    
560     Using these functions, it becomes easy to write the "wait_for_child"
561     function mentioned above:
562    
563     sub wait_for_child($) {
564     my ($pid) = @_;
565    
566     my $watcher = AnyEvent->child (pid => $pid, cb => Coro::rouse_cb);
567    
568     my ($rpid, $rstatus) = Coro::rouse_wait;
569     $rstatus
570     }
571    
572     In the case where "rouse_cb" and "rouse_wait" are not flexible enough,
573     you can roll your own, using "schedule":
574    
575     sub wait_for_child($) {
576     my ($pid) = @_;
577    
578 root 1.21 # store the current coro in $current,
579 root 1.18 # and provide result variables for the closure passed to ->child
580     my $current = $Coro::current;
581     my ($done, $rstatus);
582    
583     # pass a closure to ->child
584     my $watcher = AnyEvent->child (pid => $pid, cb => sub {
585     $rstatus = $_[1]; # remember rstatus
586     $done = 1; # mark $rstatus as valud
587     });
588    
589     # wait until the closure has been called
590     schedule while !$done;
591    
592     $rstatus
593     }
594    
595 root 1.1 BUGS/LIMITATIONS
596 root 1.18 fork with pthread backend
597     When Coro is compiled using the pthread backend (which isn't
598     recommended but required on many BSDs as their libcs are completely
599 root 1.21 broken), then coro will not survive a fork. There is no known
600 root 1.18 workaround except to fix your libc and use a saner backend.
601    
602     perl process emulation ("threads")
603     This module is not perl-pseudo-thread-safe. You should only ever use
604 root 1.19 this module from the first thread (this requirement might be removed
605 root 1.18 in the future to allow per-thread schedulers, but Coro::State does
606     not yet allow this). I recommend disabling thread support and using
607     processes, as having the windows process emulation enabled under
608     unix roughly halves perl performance, even when not used.
609    
610 root 1.21 coro switching is not signal safe
611     You must not switch to another coro from within a signal handler
612     (only relevant with %SIG - most event libraries provide safe
613 root 1.18 signals).
614    
615     That means you *MUST NOT* call any function that might "block" the
616 root 1.21 current coro - "cede", "schedule" "Coro::Semaphore->down" or
617 root 1.18 anything that calls those. Everything else, including calling
618     "ready", works.
619 root 1.1
620     SEE ALSO
621 root 1.14 Event-Loop integration: Coro::AnyEvent, Coro::EV, Coro::Event.
622 root 1.12
623     Debugging: Coro::Debug.
624    
625     Support/Utility: Coro::Specific, Coro::Util.
626 root 1.2
627 root 1.19 Locking and IPC: Coro::Signal, Coro::Channel, Coro::Semaphore,
628 root 1.2 Coro::SemaphoreSet, Coro::RWLock.
629    
630 root 1.19 I/O and Timers: Coro::Timer, Coro::Handle, Coro::Socket, Coro::AIO.
631 root 1.14
632 root 1.19 Compatibility with other modules: Coro::LWP (but see also AnyEvent::HTTP
633     for a better-working alternative), Coro::BDB, Coro::Storable,
634     Coro::Select.
635 root 1.12
636 root 1.14 XS API: Coro::MakeMaker.
637 root 1.2
638 root 1.19 Low level Configuration, Thread Environment, Continuations: Coro::State.
639 root 1.1
640     AUTHOR
641     Marc Lehmann <schmorp@schmorp.de>
642     http://home.schmorp.de/
643