ThreadIterator

 view release on metacpan or  search on metacpan

iterator.t  view on Meta::CPAN

use Thread::Iterator 'coroutine';

$c = coroutine {
    my $obj = shift;
    for (my $i = 0; $i < 10; $i++) {
	$obj->provide($i);
   }
};

for ($j = 0; $j < 12; $j++) {
    printf "iterator is %s, ", $c->alive ? "alive" : "dead";
    my $val = $c->iterate;
    printf "value is %s\n", defined($val) ? $val : "undefined";
}



( run in 0.846 second using v1.01-cache-2.11-cpan-39bf76dae61 )