logo
Author: ksurent
Description: бажное распределение данных между потоками
Language: Perl
#!perl

use strict;
use warnings;

use Data::Dumper;

my $data_file = 't.txt';
my $threads_number = 5;
my $actions_per_thread = 10;

my $global_offset = 0;
my @threads_data = map {
	my @res = get_lines($data_file, $actions_per_thread, $global_offset);
	$global_offset += scalar @res;
	$_ = @res ? \@res : undef
} 1..$threads_number;

print Dumper \@threads_data;

sub get_lines {
	my($file, $amount, $offset) = @_;
	my @retval;
	
	open my $fh, $file or die $!;
	
	my($current_offset, $read_lines) = (0, 0);
	while(<$fh>) {
		next if $offset && $current_offset++ != $offset;
		last if $read_lines++ == $amount;
		$offset = 0;
		
		push @retval => $_
	}
	
	close $fh;
	
	@retval
}
Recent pastes:
n4n (Plain Text)
n4n (Perl)
alexITmore (Delphi)
alexITmore (Delphi)
ksurent (Perl)
ksurent (Perl)
ksurent (SQL)
cra (Perl)
cra (C++)
ksurent (Perl)
n0xi0uzz (Bash)
ksurent (Perl)
ksurent (Perl)
ksurent (Perl)
biophreak (Perl)
ksurent (Perl)
Gum (C++)
n0xi0uzz (PHP)
netsago.paste.β © 2008 Neunica