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

Comparing Coro/Coro.pm (file contents):
Revision 1.142 by root, Tue Oct 2 23:16:24 2007 UTC vs.
Revision 1.145 by root, Wed Oct 3 16:03:17 2007 UTC

50 50
51our $idle; # idle handler 51our $idle; # idle handler
52our $main; # main coroutine 52our $main; # main coroutine
53our $current; # current coroutine 53our $current; # current coroutine
54 54
55our $VERSION = '3.8'; 55our $VERSION = '4.0';
56 56
57our @EXPORT = qw(async async_pool cede schedule terminate current unblock_sub); 57our @EXPORT = qw(async async_pool cede schedule terminate current unblock_sub);
58our %EXPORT_TAGS = ( 58our %EXPORT_TAGS = (
59 prio => [qw(PRIO_MAX PRIO_HIGH PRIO_NORMAL PRIO_LOW PRIO_IDLE PRIO_MIN)], 59 prio => [qw(PRIO_MAX PRIO_HIGH PRIO_NORMAL PRIO_LOW PRIO_IDLE PRIO_MIN)],
60); 60);
187 187
188Create a new asynchronous coroutine and return it's coroutine object 188Create a new asynchronous coroutine and return it's coroutine object
189(usually unused). When the sub returns the new coroutine is automatically 189(usually unused). When the sub returns the new coroutine is automatically
190terminated. 190terminated.
191 191
192See the C<Coro::State::new> constructor for info about the coroutine
193environment.
194
192Calling C<exit> in a coroutine will do the same as calling exit outside 195Calling C<exit> in a coroutine will do the same as calling exit outside
193the coroutine. Likewise, when the coroutine dies, the program will exit, 196the coroutine. Likewise, when the coroutine dies, the program will exit,
194just as it would in the main program. 197just as it would in the main program.
195 198
196 # create a new coroutine that just prints its arguments 199 # create a new coroutine that just prints its arguments
344Create a new coroutine and return it. When the sub returns the coroutine 347Create a new coroutine and return it. When the sub returns the coroutine
345automatically terminates as if C<terminate> with the returned values were 348automatically terminates as if C<terminate> with the returned values were
346called. To make the coroutine run you must first put it into the ready queue 349called. To make the coroutine run you must first put it into the ready queue
347by calling the ready method. 350by calling the ready method.
348 351
349See C<async> for additional discussion. 352See C<async> and C<Coro::State::new> for additional info about the
353coroutine environment.
350 354
351=cut 355=cut
352 356
353sub _run_coro { 357sub _run_coro {
354 terminate &{+shift}; 358 terminate &{+shift};
392} 396}
393 397
394=item $coroutine->join 398=item $coroutine->join
395 399
396Wait until the coroutine terminates and return any values given to the 400Wait until the coroutine terminates and return any values given to the
397C<terminate> or C<cancel> functions. C<join> can be called multiple times 401C<terminate> or C<cancel> functions. C<join> can be called concurrently
398from multiple coroutine. 402from multiple coroutines.
399 403
400=cut 404=cut
401 405
402sub join { 406sub join {
403 my $self = shift; 407 my $self = shift;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines