sub quicksort_t { return @_ unless @_ > 1; my $pivot = shift; ## partition the data into 2 parts and run the standard recursive algorithm ## on those two partitions in separate threads; return combined (joined) results my $t1 = asyncl sub{ quicksort( grep $_ < $pivot, @_ ) }, @_; my $t2 = asyncl sub{ quicksort( grep $_ >= $pivot, @_ ) }, @_; return ( $t1->join, $pivot, $t2->join ); }