Thread Programm stopt nach Thread start (6 answers)
Opened by chris05133 at 2013-07-08 12:07

murphy
 2013-07-09 10:40
#168779 #168779
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
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.

View full thread Programm stopt nach Thread start