{
my @cc = ();
sub cc(&) {
my ($sub) = @_;
push @cc, $sub;
}
sub cc_run() {
while (my $sub = shift @cc) {
$sub->();
sleep 1;
}
}
}
sub first {
my ($thread) = @_;
print "$thread: 1 first\n";
cc { third($thread) };
}
sub second {
my ($thread) = @_;
print "$thread: 2 second\n";
cc { fourth($thread) };
}
sub third {
my ($thread) = @_;
print "$thread: 3 third\n";
cc { first($thread) };
}
sub fourth {
my ($thread) = @_;
print "$thread: 4 fourth\n\n";
cc { second($thread) };
}
cc { first("+") };
cc { second("*") };
cc_run;
четверг, 27 сентября 2012 г.
Very simple Multithreading with Continuation-passing style
понедельник, 24 сентября 2012 г.
Добавил quit в IPC::MPS
Очень плотно и давно использую модуль IPC::MPS для распараллеливания задач, но только сейчас понадобился выход из receive блока (из вложенного receive). Поэтому добавил подпрограмму quit.
Подписаться на:
Комментарии (Atom)