Thread Programm stopt nach Thread start
(6 answers)
Opened by chris05133 at 2013-07-08 12:07
Klar dass das nicht funktioniert: Der zweite Thread wird nie erzeugt und nie gestartet, denn in Zeile 7 steht threads->new(\&test2()), also ein Aufruf von test2, dessen Rückgabewert referenziert und an threads::new übergeben werden soll, was aber nie passiert, denn test2 kehrt niemals zurück und so werden weder der zweite Aufruf von threads::new noch die Schleife im Hauptthread jemals erreicht. Stattdessen ist sicherlich threads->new(\&test2) gemeint, also die Übergabe einer Referenz auf die Subroutine test2 selbst.
Abgesehen davon erscheint auch Zeile 18 fehlerhaft, denn gemeint ist vermutlich nicht my $thread = @_, also die Zuweisung der Anzahl von Argumenten an die Variable $thread, sondern my ($thread) = @_, also die Zuweisung des ersten Argumentes an die Variable $thread. So könnte man sich dann auch die Subroutine test2 komplett sparen und statt Zeile 6 und 7 einfach Code (perl): (dl
)
1 2 my $thread1= threads->new(\&test, "Erster Thread")->detach(); my $thread2= threads->new(\&test, "Zweiter Thread")->detach(); schreiben. When C++ is your hammer, every problem looks like your thumb.
|