Thread threads => Grundwissen (50 answers)
Opened by RPerl at 2007-01-21 18:07

topeg
 2007-01-22 22:09
#73447 #73447
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Allso noch etwas ausführlicher.
Ich habe keine Möglichkeit das irgendwie zu testen (nutze nur Linux) wenn allso der Thread-aufruf irgendwie falsch ist, dann korrigiert das bitte.
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
use Thread;

#...

sub verarbeite_10_zeilen_in_thread($)
{ return Thread->new(\&verarbeite_10_zeilen,$_[0]); }

sub verarbeite_10_zeilen($)
{
  my @zeilen=@$_[0];
  # mach hier was du willst
  return("irgendwas", 42);
}

my @threads;

my @ten_lines;
my $cnt=0;
open(DAT,'<',$datei) or die $!;
while(my $line=<DAT>)
{
  push(@ten_lines,$line);
  $cnt++;
  if($cnt>=10)
  {
   $cnt=0;
   push(@threads,&verarbeite_10_zeilen_in_thread([@ten_lines]));
   @ten_lines=();
  }
}
# übrig geblibenen Zeilen verarbeiten
push(@threads,&verarbeite_10_zeilen_in_thread([@ten_lines])); if(@ten_lines>0);
close(DAT);

my @back;
push(@back,[$thread->join()]) for my $thread (@threads);
mach irgendwas mit den zurückgebenen Werten in @back ...


Das mit den Funktionen war ein Flüchtigkeitsfehler.\n\n

<!--EDIT|topeg|1169496673-->

View full thread threads => Grundwissen