#!/usr/bin/perl use strict; use warnings; use Coro; # константы sub PRIO_MAX { 3 }; sub PRIO_MIN { -4 }; # асинхронная функция sub func { my ( $i ) = @_; my $r = int rand(5); $Coro::current->{desc} = "func $i, $r"; sleep $r; print "async $i, $r \n"; }; print "start\n"; # создаем потоки и кладем в очередь for my $i ( 1..10 ) { my $th = async( \&func, $i); $th->prio( PRIO_MAX ) if $i > 4; $th->ready; } # Кладем в очередь основной поток $Coro::main->prio( PRIO_MIN ); $Coro::main->ready; # Запускаем все schedule; print "main 1 \n"; print "main 2\n";