El Módulo Coro::State

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
Licencia de Creative Commons
Programación Distribuida y Mejora del Rendimiento
por Casiano Rodríguez León is licensed under a Creative Commons Reconocimiento 3.0 Unported License.

Permissions beyond the scope of this license may be available at http://campusvirtual.ull.es/ocw/course/view.php?id=44.
2012-06-19