Thread Mehrere Prozesse für Dual/Quad Core (6 answers)
Opened by Snicker at 2008-09-05 21:24

Snicker
 2008-09-05 21:24
#114305 #114305
User since
2008-08-09
25 Artikel
BenutzerIn
[default_avatar]
Hi,
möchte mit meinem Programm mehrere Prozesse gleichzeitig ausführen, in Abhängigkeit von meinen vorhanden Cores. Dafür benutze ich den fork() Befehl.
Problematisch ist, dass zwar die gewünschte Anzahl an Prozessen gestartet wird, aber leider zählt das Programm die Variable $k1 nicht richtig hoch.
So sieht es im Fenster aus:
0
0 Simulation wird berechnet $k1 = 1 q = 1
0
0 Simulation wird berechnet $k1 = 1 q = 1
.... Programm wird ausgeführt....
.... Programm wird ausgeführt....

Die Batchdatei wird nun zweimal gestartet und verursacht nun einen Fehler im Programm. Ohne den Versuch meherere Prozesse zu starten, funktioniert alles fehlerfrei.
Ich weiß nur nicht, warum Perl die Varibale $k1 falsch hochzählt und warum der Befehl "system ("$batch$test1.bat");" erst so spät startet.


Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$q = 0;
while ($q < @einstellungen_para_wert[3]){
    my $pid = fork() ;
    my $k1 = 0;
    my $cores = 2;
    my $test1;
    if (($k1 < $cores) && ($pid ==0)){
        print "$k1\n";
        open (BATCHDATEI, ">$batch$q.bat");
        print BATCHDATEI "\@echo off\n CopasiSE @einstellungen_para_wert[2]@einstellungen_para_wert[0]$q@einstellungen_para_wert[1] --save @einstellungen_para_wert[2]@einstellungen_para_wert[0]$q$random@einstellungen_para_wert[1]";
        $test1 = $q + $k1;
        $k1++;
        print "$test1 Simulation wird berechnet \$k1 = $k1 \q = $q\n";
        system ("$batch$test1.bat");
        $q++;
        $k1--;
    }
}

View full thread Mehrere Prozesse für Dual/Quad Core