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

Comparing cvsroot/Coro/Coro.pm (file contents):
Revision 1.255 by root, Wed Jun 17 21:36:35 2009 UTC vs.
Revision 1.264 by root, Thu Aug 13 02:35:41 2009 UTC

80 80
81our $idle; # idle handler 81our $idle; # idle handler
82our $main; # main coro 82our $main; # main coro
83our $current; # current coro 83our $current; # current coro
84 84
85our $VERSION = 5.132; 85our $VERSION = 5.162;
86 86
87our @EXPORT = qw(async async_pool cede schedule terminate current unblock_sub); 87our @EXPORT = qw(async async_pool cede schedule terminate current unblock_sub);
88our %EXPORT_TAGS = ( 88our %EXPORT_TAGS = (
89 prio => [qw(PRIO_MAX PRIO_HIGH PRIO_NORMAL PRIO_LOW PRIO_IDLE PRIO_MIN)], 89 prio => [qw(PRIO_MAX PRIO_HIGH PRIO_NORMAL PRIO_LOW PRIO_IDLE PRIO_MIN)],
90); 90);
206Example: Create a new coro that just prints its arguments. 206Example: Create a new coro that just prints its arguments.
207 207
208 async { 208 async {
209 print "@_\n"; 209 print "@_\n";
210 } 1,2,3,4; 210 } 1,2,3,4;
211
212=cut
213
214sub async(&@) {
215 my $coro = new Coro @_;
216 $coro->ready;
217 $coro
218}
219 211
220=item async_pool { ... } [@args...] 212=item async_pool { ... } [@args...]
221 213
222Similar to C<async>, but uses a coro pool, so you should not call 214Similar to C<async>, but uses a coro pool, so you should not call
223terminate or join on it (although you are allowed to), and you get a 215terminate or join on it (although you are allowed to), and you get a
398 } 390 }
399 391
400 # use like this: 392 # use like this:
401 timeslice { 393 timeslice {
402 # The following is an endless loop that would normally 394 # The following is an endless loop that would normally
403 # monopolise the process. Sicne it runs in a timeslice 395 # monopolise the process. Since it runs in a timesliced
404 # environment, it will regularly cede to other threads. 396 # environment, it will regularly cede to other threads.
405 while () { } 397 while () { }
406 }; 398 };
407 399
408 400
751Wait for the specified rouse callback (or the last one that was created in 743Wait for the specified rouse callback (or the last one that was created in
752this coro). 744this coro).
753 745
754As soon as the callback is invoked (or when the callback was invoked 746As soon as the callback is invoked (or when the callback was invoked
755before C<rouse_wait>), it will return the arguments originally passed to 747before C<rouse_wait>), it will return the arguments originally passed to
756the rouse callback. 748the rouse callback. In scalar context, that means you get the I<last>
749argument, just as if C<rouse_wait> had a C<return ($a1, $a2, $a3...)>
750statement at the end.
757 751
758See the section B<HOW TO WAIT FOR A CALLBACK> for an actual usage example. 752See the section B<HOW TO WAIT FOR A CALLBACK> for an actual usage example.
759 753
760=back 754=back
761 755

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines