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