ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Coro/Coro.pm
Revision: 1.246
Committed: Mon Dec 15 00:30:40 2008 UTC (15 years, 6 months ago) by root
Branch: MAIN
Changes since 1.245: +2 -0 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.1 =head1 NAME
2    
3 root 1.238 Coro - the only real threads in perl
4 root 1.1
5     =head1 SYNOPSIS
6    
7 root 1.179 use Coro;
8    
9     async {
10     # some asynchronous thread of execution
11     print "2\n";
12     cede; # yield back to main
13     print "4\n";
14     };
15     print "1\n";
16     cede; # yield to coroutine
17     print "3\n";
18     cede; # and again
19    
20     # use locking
21 root 1.197 use Coro::Semaphore;
22 root 1.179 my $lock = new Coro::Semaphore;
23     my $locked;
24    
25     $lock->down;
26     $locked = 1;
27     $lock->up;
28 root 1.2
29 root 1.1 =head1 DESCRIPTION
30    
31 root 1.237 For a tutorial-style introduction, please read the L<Coro::Intro>
32     manpage. This manpage mainly contains reference information.
33    
34 root 1.238 This module collection manages continuations in general, most often
35     in the form of cooperative threads (also called coroutines in the
36     documentation). They are similar to kernel threads but don't (in general)
37 root 1.234 run in parallel at the same time even on SMP machines. The specific flavor
38 root 1.238 of thread offered by this module also guarantees you that it will not
39     switch between threads unless necessary, at easily-identified points in
40     your program, so locking and parallel access are rarely an issue, making
41     thread programming much safer and easier than using other thread models.
42 root 1.234
43     Unlike the so-called "Perl threads" (which are not actually real threads
44     but only the windows process emulation ported to unix), Coro provides a
45 root 1.238 full shared address space, which makes communication between threads
46     very easy. And threads are fast, too: disabling the Windows process
47 root 1.234 emulation code in your perl and using Coro can easily result in a two to
48     four times speed increase for your programs.
49    
50     Coro achieves that by supporting multiple running interpreters that share
51     data, which is especially useful to code pseudo-parallel processes and
52     for event-based programming, such as multiple HTTP-GET requests running
53     concurrently. See L<Coro::AnyEvent> to learn more on how to integrate Coro
54     into an event-based environment.
55    
56 root 1.238 In this module, a thread is defined as "callchain + lexical variables +
57     @_ + $_ + $@ + $/ + C stack), that is, a thread has its own callchain,
58     its own set of lexicals and its own set of perls most important global
59     variables (see L<Coro::State> for more configuration and background info).
60 root 1.234
61     See also the C<SEE ALSO> section at the end of this document - the Coro
62     module family is quite large.
63 root 1.22
64 root 1.8 =cut
65    
66     package Coro;
67    
68 root 1.211 use strict qw(vars subs);
69 root 1.71 no warnings "uninitialized";
70 root 1.36
71 root 1.246 use Guard ();
72    
73 root 1.8 use Coro::State;
74    
75 root 1.83 use base qw(Coro::State Exporter);
76 pcg 1.55
77 root 1.83 our $idle; # idle handler
78 root 1.71 our $main; # main coroutine
79     our $current; # current coroutine
80 root 1.8
81 root 1.244 our $VERSION = 5.13;
82 root 1.8
83 root 1.105 our @EXPORT = qw(async async_pool cede schedule terminate current unblock_sub);
84 root 1.71 our %EXPORT_TAGS = (
85 root 1.31 prio => [qw(PRIO_MAX PRIO_HIGH PRIO_NORMAL PRIO_LOW PRIO_IDLE PRIO_MIN)],
86     );
87 root 1.97 our @EXPORT_OK = (@{$EXPORT_TAGS{prio}}, qw(nready));
88 root 1.8
89 root 1.234 =head1 GLOBAL VARIABLES
90    
91 root 1.43 =over 4
92    
93 root 1.181 =item $Coro::main
94 root 1.2
95 root 1.181 This variable stores the coroutine object that represents the main
96     program. While you cna C<ready> it and do most other things you can do to
97     coroutines, it is mainly useful to compare again C<$Coro::current>, to see
98 root 1.196 whether you are running in the main program or not.
99 root 1.1
100     =cut
101    
102 root 1.220 # $main is now being initialised by Coro::State
103 root 1.8
104 root 1.181 =item $Coro::current
105 root 1.1
106 root 1.181 The coroutine object representing the current coroutine (the last
107     coroutine that the Coro scheduler switched to). The initial value is
108 root 1.220 C<$Coro::main> (of course).
109 root 1.181
110     This variable is B<strictly> I<read-only>. You can take copies of the
111     value stored in it and use it as any other coroutine object, but you must
112     not otherwise modify the variable itself.
113 root 1.1
114 root 1.8 =cut
115    
116 root 1.181 sub current() { $current } # [DEPRECATED]
117 root 1.9
118 root 1.181 =item $Coro::idle
119 root 1.9
120 root 1.181 This variable is mainly useful to integrate Coro into event loops. It is
121 root 1.238 usually better to rely on L<Coro::AnyEvent> or L<Coro::EV>, as this is
122 root 1.181 pretty low-level functionality.
123    
124 root 1.238 This variable stores either a coroutine or a callback.
125 root 1.83
126 root 1.238 If it is a callback, the it is called whenever the scheduler finds no
127     ready coroutines to run. The default implementation prints "FATAL:
128     deadlock detected" and exits, because the program has no other way to
129     continue.
130    
131     If it is a coroutine object, then this object will be readied (without
132     invoking any ready hooks, however) when the scheduler finds no other ready
133     coroutines to run.
134    
135     This hook is overwritten by modules such as C<Coro::EV> and
136 root 1.181 C<Coro::AnyEvent> to wait on an external event that hopefully wake up a
137 root 1.91 coroutine so the scheduler can run it.
138    
139 root 1.181 Note that the callback I<must not>, under any circumstances, block
140     the current coroutine. Normally, this is achieved by having an "idle
141     coroutine" that calls the event loop and then blocks again, and then
142 root 1.238 readying that coroutine in the idle handler, or by simply placing the idle
143     coroutine in this variable.
144 root 1.181
145     See L<Coro::Event> or L<Coro::AnyEvent> for examples of using this
146     technique.
147    
148 root 1.91 Please note that if your callback recursively invokes perl (e.g. for event
149 root 1.152 handlers), then it must be prepared to be called recursively itself.
150 root 1.9
151     =cut
152    
153 root 1.83 $idle = sub {
154 root 1.96 require Carp;
155     Carp::croak ("FATAL: deadlock detected");
156 root 1.9 };
157 root 1.8
158 root 1.24 # this coroutine is necessary because a coroutine
159     # cannot destroy itself.
160 root 1.226 our @destroy;
161     our $manager;
162 root 1.103
163     $manager = new Coro sub {
164 pcg 1.57 while () {
165 root 1.230 Coro::_cancel shift @destroy
166 root 1.103 while @destroy;
167    
168 root 1.24 &schedule;
169     }
170     };
171 root 1.208 $manager->{desc} = "[coro manager]";
172 root 1.103 $manager->prio (PRIO_MAX);
173    
174 root 1.43 =back
175 root 1.8
176 root 1.234 =head1 SIMPLE COROUTINE CREATION
177 root 1.8
178     =over 4
179    
180 root 1.13 =item async { ... } [@args...]
181 root 1.8
182 root 1.240 Create a new coroutine and return its coroutine object (usually
183 root 1.181 unused). The coroutine will be put into the ready queue, so
184     it will start running automatically on the next scheduler run.
185    
186     The first argument is a codeblock/closure that should be executed in the
187     coroutine. When it returns argument returns the coroutine is automatically
188 root 1.8 terminated.
189    
190 root 1.181 The remaining arguments are passed as arguments to the closure.
191    
192 root 1.145 See the C<Coro::State::new> constructor for info about the coroutine
193 root 1.181 environment in which coroutines are executed.
194 root 1.145
195 root 1.122 Calling C<exit> in a coroutine will do the same as calling exit outside
196     the coroutine. Likewise, when the coroutine dies, the program will exit,
197     just as it would in the main program.
198 root 1.79
199 root 1.181 If you do not want that, you can provide a default C<die> handler, or
200     simply avoid dieing (by use of C<eval>).
201    
202     Example: Create a new coroutine that just prints its arguments.
203    
204 root 1.13 async {
205     print "@_\n";
206     } 1,2,3,4;
207    
208 root 1.8 =cut
209    
210 root 1.13 sub async(&@) {
211 root 1.104 my $coro = new Coro @_;
212     $coro->ready;
213     $coro
214 root 1.8 }
215 root 1.1
216 root 1.105 =item async_pool { ... } [@args...]
217    
218     Similar to C<async>, but uses a coroutine pool, so you should not call
219 root 1.181 terminate or join on it (although you are allowed to), and you get a
220     coroutine that might have executed other code already (which can be good
221     or bad :).
222    
223 root 1.228 On the plus side, this function is about twice as fast as creating (and
224     destroying) a completely new coroutine, so if you need a lot of generic
225     coroutines in quick successsion, use C<async_pool>, not C<async>.
226 root 1.105
227 root 1.181 The code block is executed in an C<eval> context and a warning will be
228 root 1.108 issued in case of an exception instead of terminating the program, as
229     C<async> does. As the coroutine is being reused, stuff like C<on_destroy>
230     will not work in the expected way, unless you call terminate or cancel,
231 root 1.181 which somehow defeats the purpose of pooling (but is fine in the
232     exceptional case).
233 root 1.105
234 root 1.181 The priority will be reset to C<0> after each run, tracing will be
235 root 1.146 disabled, the description will be reset and the default output filehandle
236 root 1.181 gets restored, so you can change all these. Otherwise the coroutine will
237 root 1.146 be re-used "as-is": most notably if you change other per-coroutine global
238 root 1.204 stuff such as C<$/> you I<must needs> revert that change, which is most
239     simply done by using local as in: C<< local $/ >>.
240 root 1.105
241 root 1.204 The idle pool size is limited to C<8> idle coroutines (this can be
242     adjusted by changing $Coro::POOL_SIZE), but there can be as many non-idle
243     coros as required.
244 root 1.105
245     If you are concerned about pooled coroutines growing a lot because a
246 root 1.133 single C<async_pool> used a lot of stackspace you can e.g. C<async_pool
247     { terminate }> once per second or so to slowly replenish the pool. In
248 root 1.232 addition to that, when the stacks used by a handler grows larger than 32kb
249 root 1.181 (adjustable via $Coro::POOL_RSS) it will also be destroyed.
250 root 1.105
251     =cut
252    
253     our $POOL_SIZE = 8;
254 root 1.232 our $POOL_RSS = 32 * 1024;
255 root 1.134 our @async_pool;
256 root 1.105
257     sub pool_handler {
258     while () {
259 root 1.134 eval {
260 root 1.227 &{&_pool_handler} while 1;
261 root 1.105 };
262 root 1.134
263 root 1.227 warn $@ if $@;
264 root 1.106 }
265     }
266 root 1.105
267 root 1.181 =back
268    
269 root 1.234 =head1 STATIC METHODS
270 root 1.181
271 root 1.234 Static methods are actually functions that implicitly operate on the
272     current coroutine.
273 root 1.181
274     =over 4
275    
276 root 1.8 =item schedule
277 root 1.6
278 root 1.181 Calls the scheduler. The scheduler will find the next coroutine that is
279     to be run from the ready queue and switches to it. The next coroutine
280     to be run is simply the one with the highest priority that is longest
281     in its ready queue. If there is no coroutine ready, it will clal the
282     C<$Coro::idle> hook.
283    
284     Please note that the current coroutine will I<not> be put into the ready
285     queue, so calling this function usually means you will never be called
286     again unless something else (e.g. an event handler) calls C<< ->ready >>,
287     thus waking you up.
288    
289     This makes C<schedule> I<the> generic method to use to block the current
290     coroutine and wait for events: first you remember the current coroutine in
291     a variable, then arrange for some callback of yours to call C<< ->ready
292     >> on that once some event happens, and last you call C<schedule> to put
293     yourself to sleep. Note that a lot of things can wake your coroutine up,
294 root 1.196 so you need to check whether the event indeed happened, e.g. by storing the
295 root 1.181 status in a variable.
296 root 1.91
297 root 1.224 See B<HOW TO WAIT FOR A CALLBACK>, below, for some ways to wait for callbacks.
298 root 1.1
299 root 1.22 =item cede
300 root 1.1
301 root 1.181 "Cede" to other coroutines. This function puts the current coroutine into
302     the ready queue and calls C<schedule>, which has the effect of giving
303     up the current "timeslice" to other coroutines of the same or higher
304     priority. Once your coroutine gets its turn again it will automatically be
305     resumed.
306    
307     This function is often called C<yield> in other languages.
308 root 1.7
309 root 1.102 =item Coro::cede_notself
310    
311 root 1.181 Works like cede, but is not exported by default and will cede to I<any>
312     coroutine, regardless of priority. This is useful sometimes to ensure
313     progress is made.
314 root 1.102
315 root 1.40 =item terminate [arg...]
316 root 1.7
317 root 1.92 Terminates the current coroutine with the given status values (see L<cancel>).
318 root 1.13
319 root 1.141 =item killall
320    
321     Kills/terminates/cancels all coroutines except the currently running
322 root 1.245 one. This can be useful after a fork, either in the child or the parent,
323     as usually only one of them should inherit the running coroutines.
324    
325     Note that in the implementation, destructors run as normal, making this
326     function not so useful after a fork. Future versions of this function
327     might try to free resources without running any code.
328 root 1.141
329 root 1.181 Note that while this will try to free some of the main programs resources,
330 root 1.196 you cannot free all of them, so if a coroutine that is not the main
331 root 1.181 program calls this function, there will be some one-time resource leak.
332    
333 root 1.1 =cut
334    
335 root 1.141 sub killall {
336     for (Coro::State::list) {
337     $_->cancel
338     if $_ != $current && UNIVERSAL::isa $_, "Coro";
339     }
340     }
341    
342 root 1.8 =back
343    
344 root 1.234 =head1 COROUTINE OBJECT METHODS
345 root 1.8
346 root 1.181 These are the methods you can call on coroutine objects (or to create
347     them).
348 root 1.6
349 root 1.8 =over 4
350    
351 root 1.13 =item new Coro \&sub [, @args...]
352 root 1.8
353 root 1.181 Create a new coroutine and return it. When the sub returns, the coroutine
354 root 1.40 automatically terminates as if C<terminate> with the returned values were
355 root 1.181 called. To make the coroutine run you must first put it into the ready
356     queue by calling the ready method.
357 root 1.13
358 root 1.145 See C<async> and C<Coro::State::new> for additional info about the
359     coroutine environment.
360 root 1.89
361 root 1.6 =cut
362    
363 root 1.241 sub _coro_run {
364 root 1.13 terminate &{+shift};
365     }
366    
367 root 1.92 =item $success = $coroutine->ready
368 root 1.1
369 root 1.181 Put the given coroutine into the end of its ready queue (there is one
370     queue for each priority) and return true. If the coroutine is already in
371     the ready queue, do nothing and return false.
372    
373     This ensures that the scheduler will resume this coroutine automatically
374     once all the coroutines of higher priority and all coroutines of the same
375     priority that were put into the ready queue earlier have been resumed.
376 root 1.1
377 root 1.92 =item $is_ready = $coroutine->is_ready
378 root 1.90
379 root 1.196 Return whether the coroutine is currently the ready queue or not,
380 root 1.28
381 root 1.92 =item $coroutine->cancel (arg...)
382 root 1.28
383 root 1.92 Terminates the given coroutine and makes it return the given arguments as
384 root 1.103 status (default: the empty list). Never returns if the coroutine is the
385     current coroutine.
386 root 1.28
387     =cut
388    
389     sub cancel {
390 pcg 1.59 my $self = shift;
391 root 1.103
392     if ($current == $self) {
393 root 1.226 terminate @_;
394 root 1.103 } else {
395 root 1.226 $self->{_status} = [@_];
396 root 1.103 $self->_cancel;
397     }
398 root 1.40 }
399    
400 root 1.229 =item $coroutine->schedule_to
401    
402     Puts the current coroutine to sleep (like C<Coro::schedule>), but instead
403     of continuing with the next coro from the ready queue, always switch to
404     the given coroutine object (regardless of priority etc.). The readyness
405     state of that coroutine isn't changed.
406    
407     This is an advanced method for special cases - I'd love to hear about any
408     uses for this one.
409    
410     =item $coroutine->cede_to
411    
412     Like C<schedule_to>, but puts the current coroutine into the ready
413     queue. This has the effect of temporarily switching to the given
414     coroutine, and continuing some time later.
415    
416     This is an advanced method for special cases - I'd love to hear about any
417     uses for this one.
418    
419 root 1.208 =item $coroutine->throw ([$scalar])
420    
421     If C<$throw> is specified and defined, it will be thrown as an exception
422 root 1.222 inside the coroutine at the next convenient point in time. Otherwise
423     clears the exception object.
424    
425     Coro will check for the exception each time a schedule-like-function
426     returns, i.e. after each C<schedule>, C<cede>, C<< Coro::Semaphore->down
427 root 1.223 >>, C<< Coro::Handle->readable >> and so on. Most of these functions
428     detect this case and return early in case an exception is pending.
429 root 1.208
430     The exception object will be thrown "as is" with the specified scalar in
431     C<$@>, i.e. if it is a string, no line number or newline will be appended
432     (unlike with C<die>).
433    
434     This can be used as a softer means than C<cancel> to ask a coroutine to
435     end itself, although there is no guarantee that the exception will lead to
436     termination, and if the exception isn't caught it might well end the whole
437     program.
438    
439     You might also think of C<throw> as being the moral equivalent of
440     C<kill>ing a coroutine with a signal (in this case, a scalar).
441    
442 root 1.92 =item $coroutine->join
443 root 1.40
444     Wait until the coroutine terminates and return any values given to the
445 root 1.143 C<terminate> or C<cancel> functions. C<join> can be called concurrently
446 root 1.181 from multiple coroutines, and all will be resumed and given the status
447     return once the C<$coroutine> terminates.
448 root 1.40
449     =cut
450    
451     sub join {
452     my $self = shift;
453 root 1.103
454 root 1.142 unless ($self->{_status}) {
455 root 1.103 my $current = $current;
456    
457 root 1.142 push @{$self->{_on_destroy}}, sub {
458 root 1.103 $current->ready;
459     undef $current;
460     };
461    
462     &schedule while $current;
463 root 1.40 }
464 root 1.103
465 root 1.142 wantarray ? @{$self->{_status}} : $self->{_status}[0];
466 root 1.31 }
467    
468 root 1.101 =item $coroutine->on_destroy (\&cb)
469    
470     Registers a callback that is called when this coroutine gets destroyed,
471     but before it is joined. The callback gets passed the terminate arguments,
472 root 1.181 if any, and I<must not> die, under any circumstances.
473 root 1.101
474     =cut
475    
476     sub on_destroy {
477     my ($self, $cb) = @_;
478    
479 root 1.142 push @{ $self->{_on_destroy} }, $cb;
480 root 1.101 }
481    
482 root 1.92 =item $oldprio = $coroutine->prio ($newprio)
483 root 1.31
484 root 1.41 Sets (or gets, if the argument is missing) the priority of the
485 root 1.92 coroutine. Higher priority coroutines get run before lower priority
486     coroutines. Priorities are small signed integers (currently -4 .. +3),
487 root 1.41 that you can refer to using PRIO_xxx constants (use the import tag :prio
488     to get then):
489 root 1.31
490     PRIO_MAX > PRIO_HIGH > PRIO_NORMAL > PRIO_LOW > PRIO_IDLE > PRIO_MIN
491     3 > 1 > 0 > -1 > -3 > -4
492    
493     # set priority to HIGH
494     current->prio(PRIO_HIGH);
495    
496     The idle coroutine ($Coro::idle) always has a lower priority than any
497     existing coroutine.
498    
499 root 1.92 Changing the priority of the current coroutine will take effect immediately,
500     but changing the priority of coroutines in the ready queue (but not
501 root 1.31 running) will only take effect after the next schedule (of that
502 root 1.92 coroutine). This is a bug that will be fixed in some future version.
503 root 1.31
504 root 1.92 =item $newprio = $coroutine->nice ($change)
505 root 1.31
506     Similar to C<prio>, but subtract the given value from the priority (i.e.
507     higher values mean lower priority, just as in unix).
508    
509 root 1.92 =item $olddesc = $coroutine->desc ($newdesc)
510 root 1.41
511     Sets (or gets in case the argument is missing) the description for this
512 root 1.208 coroutine. This is just a free-form string you can associate with a
513     coroutine.
514 root 1.150
515 root 1.208 This method simply sets the C<< $coroutine->{desc} >> member to the given
516     string. You can modify this member directly if you wish.
517 root 1.150
518 root 1.41 =cut
519    
520     sub desc {
521     my $old = $_[0]{desc};
522     $_[0]{desc} = $_[1] if @_ > 1;
523     $old;
524 root 1.8 }
525 root 1.1
526 root 1.233 sub transfer {
527     require Carp;
528     Carp::croak ("You must not call ->transfer on Coro objects. Use Coro::State objects or the ->schedule_to method. Caught");
529     }
530    
531 root 1.8 =back
532 root 1.2
533 root 1.234 =head1 GLOBAL FUNCTIONS
534 root 1.92
535     =over 4
536    
537 root 1.97 =item Coro::nready
538    
539     Returns the number of coroutines that are currently in the ready state,
540 root 1.181 i.e. that can be switched to by calling C<schedule> directory or
541     indirectly. The value C<0> means that the only runnable coroutine is the
542     currently running one, so C<cede> would have no effect, and C<schedule>
543     would cause a deadlock unless there is an idle handler that wakes up some
544     coroutines.
545 root 1.97
546 root 1.103 =item my $guard = Coro::guard { ... }
547    
548 root 1.243 This function still exists, but is deprecated. Please use the
549     C<Guard::guard> function instead.
550 root 1.103
551     =cut
552    
553 root 1.243 BEGIN { *guard = \&Guard::guard }
554 root 1.103
555 root 1.92 =item unblock_sub { ... }
556    
557     This utility function takes a BLOCK or code reference and "unblocks" it,
558 root 1.181 returning a new coderef. Unblocking means that calling the new coderef
559     will return immediately without blocking, returning nothing, while the
560     original code ref will be called (with parameters) from within another
561     coroutine.
562 root 1.92
563 root 1.124 The reason this function exists is that many event libraries (such as the
564 root 1.92 venerable L<Event|Event> module) are not coroutine-safe (a weaker form
565 root 1.238 of reentrancy). This means you must not block within event callbacks,
566 root 1.181 otherwise you might suffer from crashes or worse. The only event library
567     currently known that is safe to use without C<unblock_sub> is L<EV>.
568 root 1.92
569     This function allows your callbacks to block by executing them in another
570     coroutine where it is safe to block. One example where blocking is handy
571     is when you use the L<Coro::AIO|Coro::AIO> functions to save results to
572 root 1.181 disk, for example.
573 root 1.92
574     In short: simply use C<unblock_sub { ... }> instead of C<sub { ... }> when
575     creating event callbacks that want to block.
576    
577 root 1.181 If your handler does not plan to block (e.g. simply sends a message to
578     another coroutine, or puts some other coroutine into the ready queue),
579     there is no reason to use C<unblock_sub>.
580    
581 root 1.183 Note that you also need to use C<unblock_sub> for any other callbacks that
582     are indirectly executed by any C-based event loop. For example, when you
583     use a module that uses L<AnyEvent> (and you use L<Coro::AnyEvent>) and it
584     provides callbacks that are the result of some event callback, then you
585     must not block either, or use C<unblock_sub>.
586    
587 root 1.92 =cut
588    
589     our @unblock_queue;
590    
591 root 1.105 # we create a special coro because we want to cede,
592     # to reduce pressure on the coro pool (because most callbacks
593     # return immediately and can be reused) and because we cannot cede
594     # inside an event callback.
595 root 1.132 our $unblock_scheduler = new Coro sub {
596 root 1.92 while () {
597     while (my $cb = pop @unblock_queue) {
598 root 1.227 &async_pool (@$cb);
599 root 1.105
600 root 1.227 # for short-lived callbacks, this reduces pressure on the coro pool
601     # as the chance is very high that the async_poll coro will be back
602     # in the idle state when cede returns
603     cede;
604 root 1.92 }
605 root 1.105 schedule; # sleep well
606 root 1.92 }
607     };
608 root 1.208 $unblock_scheduler->{desc} = "[unblock_sub scheduler]";
609 root 1.92
610     sub unblock_sub(&) {
611     my $cb = shift;
612    
613     sub {
614 root 1.105 unshift @unblock_queue, [$cb, @_];
615 root 1.92 $unblock_scheduler->ready;
616     }
617     }
618    
619 root 1.224 =item $cb = Coro::rouse_cb
620    
621 root 1.238 Create and return a "rouse callback". That's a code reference that,
622     when called, will remember a copy of its arguments and notify the owner
623     coroutine of the callback.
624 root 1.224
625     See the next function.
626    
627     =item @args = Coro::rouse_wait [$cb]
628    
629 root 1.238 Wait for the specified rouse callback (or the last one that was created in
630 root 1.224 this coroutine).
631    
632 root 1.238 As soon as the callback is invoked (or when the callback was invoked
633     before C<rouse_wait>), it will return the arguments originally passed to
634     the rouse callback.
635 root 1.224
636     See the section B<HOW TO WAIT FOR A CALLBACK> for an actual usage example.
637    
638 root 1.92 =back
639    
640 root 1.8 =cut
641 root 1.2
642 root 1.8 1;
643 root 1.14
644 root 1.224 =head1 HOW TO WAIT FOR A CALLBACK
645    
646     It is very common for a coroutine to wait for some callback to be
647     called. This occurs naturally when you use coroutines in an otherwise
648     event-based program, or when you use event-based libraries.
649    
650     These typically register a callback for some event, and call that callback
651     when the event occured. In a coroutine, however, you typically want to
652     just wait for the event, simplyifying things.
653    
654     For example C<< AnyEvent->child >> registers a callback to be called when
655     a specific child has exited:
656    
657     my $child_watcher = AnyEvent->child (pid => $pid, cb => sub { ... });
658    
659     But from withina coroutine, you often just want to write this:
660    
661     my $status = wait_for_child $pid;
662    
663     Coro offers two functions specifically designed to make this easy,
664     C<Coro::rouse_cb> and C<Coro::rouse_wait>.
665    
666     The first function, C<rouse_cb>, generates and returns a callback that,
667 root 1.240 when invoked, will save its arguments and notify the coroutine that
668 root 1.224 created the callback.
669    
670     The second function, C<rouse_wait>, waits for the callback to be called
671     (by calling C<schedule> to go to sleep) and returns the arguments
672     originally passed to the callback.
673    
674     Using these functions, it becomes easy to write the C<wait_for_child>
675     function mentioned above:
676    
677     sub wait_for_child($) {
678     my ($pid) = @_;
679    
680     my $watcher = AnyEvent->child (pid => $pid, cb => Coro::rouse_cb);
681    
682     my ($rpid, $rstatus) = Coro::rouse_wait;
683     $rstatus
684     }
685    
686     In the case where C<rouse_cb> and C<rouse_wait> are not flexible enough,
687     you can roll your own, using C<schedule>:
688    
689     sub wait_for_child($) {
690     my ($pid) = @_;
691    
692     # store the current coroutine in $current,
693     # and provide result variables for the closure passed to ->child
694     my $current = $Coro::current;
695     my ($done, $rstatus);
696    
697     # pass a closure to ->child
698     my $watcher = AnyEvent->child (pid => $pid, cb => sub {
699     $rstatus = $_[1]; # remember rstatus
700     $done = 1; # mark $rstatus as valud
701     });
702    
703     # wait until the closure has been called
704     schedule while !$done;
705    
706     $rstatus
707     }
708    
709    
710 root 1.17 =head1 BUGS/LIMITATIONS
711 root 1.14
712 root 1.217 =over 4
713    
714 root 1.219 =item fork with pthread backend
715    
716     When Coro is compiled using the pthread backend (which isn't recommended
717     but required on many BSDs as their libcs are completely broken), then
718     coroutines will not survive a fork. There is no known workaround except to
719     fix your libc and use a saner backend.
720    
721 root 1.217 =item perl process emulation ("threads")
722    
723 root 1.181 This module is not perl-pseudo-thread-safe. You should only ever use this
724 root 1.238 module from the first thread (this requirement might be removed in the
725 root 1.181 future to allow per-thread schedulers, but Coro::State does not yet allow
726 root 1.217 this). I recommend disabling thread support and using processes, as having
727     the windows process emulation enabled under unix roughly halves perl
728     performance, even when not used.
729    
730     =item coroutine switching not signal safe
731    
732     You must not switch to another coroutine from within a signal handler
733     (only relevant with %SIG - most event libraries provide safe signals).
734    
735 root 1.221 That means you I<MUST NOT> call any function that might "block" the
736 root 1.217 current coroutine - C<cede>, C<schedule> C<< Coro::Semaphore->down >> or
737     anything that calls those. Everything else, including calling C<ready>,
738     works.
739    
740     =back
741    
742 root 1.9
743     =head1 SEE ALSO
744    
745 root 1.181 Event-Loop integration: L<Coro::AnyEvent>, L<Coro::EV>, L<Coro::Event>.
746 root 1.152
747     Debugging: L<Coro::Debug>.
748    
749     Support/Utility: L<Coro::Specific>, L<Coro::Util>.
750 root 1.67
751 root 1.238 Locking and IPC: L<Coro::Signal>, L<Coro::Channel>, L<Coro::Semaphore>,
752 root 1.235 L<Coro::SemaphoreSet>, L<Coro::RWLock>.
753 root 1.67
754 root 1.238 I/O and Timers: L<Coro::Timer>, L<Coro::Handle>, L<Coro::Socket>, L<Coro::AIO>.
755 root 1.181
756 root 1.238 Compatibility with other modules: L<Coro::LWP> (but see also L<AnyEvent::HTTP> for
757 root 1.235 a better-working alternative), L<Coro::BDB>, L<Coro::Storable>,
758     L<Coro::Select>.
759 root 1.152
760 root 1.181 XS API: L<Coro::MakeMaker>.
761 root 1.67
762 root 1.238 Low level Configuration, Thread Environment, Continuations: L<Coro::State>.
763 root 1.1
764     =head1 AUTHOR
765    
766 root 1.66 Marc Lehmann <schmorp@schmorp.de>
767 root 1.64 http://home.schmorp.de/
768 root 1.1
769     =cut
770