#!/usr/bin/env perl use lib '.'; use Continuation::Thread; use strict; use warnings; sub thing { my ($x) = @_; my $res = $x ** 3; return $res; } sub foo { my ($x, $y) = @_; my $sum = 0; while ($y < 24) { $sum += ($y + $x); creturn $sum; $y++; $x *= 3; } $sum += ($y + $x); return $sum; } sub blah { my ($x, $y) = @_; my $res = $x * $y; return $res; } for (1 .. 10) { my $f = Continuation::Thread->call(\&foo, 3, 1); while (!$f->done) { $f->continue; my $res = $f->result; my ($val) = @$res; print "continuation returned: $val\n"; } }