Coro usa el módulo Coro::State
para la implementación
de corutinas. Coro::State es una capa a un nivel inferior que da soporte a
Coro. En Coro::State la transferencia de control es
explícita y se hace con el método transfer .
El programa anterior es equivalente a este (véase Coro::State):
pp2@nereida:~/src/perl/coro$ cat -n synopsistransfer.pl
1 #!/usr/bin/perl
2 use strict;
3 use warnings;
4 use Coro::State;
5
6 my ($main, $co);
7 $co = Coro::State->new(sub {
8 print "2\n";
9 $co->transfer($main); # yield back to main
10 print "4\n";
11 $co->transfer($main); # yield back to main
12 });
13 $main = Coro::State->new; # The main coroutine
14 print "1\n";
15 $main->transfer($co); # yield to coroutine
16 print "3\n";
17 $main->transfer($co);
18 print "5\n";
Cuando se llama a Coro::State->new($coderef) se crea una nueva corutina.
La primera transfer encia a esta corutina comenzará la ejecución.
Si la subrutina alcanza el punto de retorno todo el programa termina.
Si se omite el argumento $coderef se creará un objeto que guarda la corutina
actual.
Casiano Rodríguez León
