Um Ikegamis Antwort auf Ihre dritte Frage zu verstärken, erstellt Perl eine vollständige Kopie des gesamten Status des Interpreters für jeden Betriebssystem-Thread. Dies bedeutet, dass alle Daten und der Code kopiert werden. Auf der anderen Seite macht dies das Erstellen von Threads langsam und Perl-Threads sind speicherhungrig.
Auf der Oberseite sind Threads voneinander isoliert, was es viel einfacher macht, Thread-sicheren Code zu schreiben. Zum Beispiel sind die meisten Module von Natur aus Thread-sicher, ohne dass der Autor irgendetwas Besonderes machen oder überhaupt über Threads nachdenken muss.
Dies ist Perls zweite Thread-Implementierung. Die ersten 5,005 Threads waren ein traditionelleres Threading-Modell, bei dem Threads Code und globale Variablen gemeinsam nutzen. Es hat nicht sehr gut funktioniert. Schlimmer noch, es machte die meisten CPAN-Module nutzlos, da ihre unkoordinierten globalen Variablen unter den verschiedenen Threads miteinander kollidierten.
Wie es möglich ist, ist eine Sache namens "Multiplizität", die Ikegami erwähnt und erklärt. Dies entstand ursprünglich aus dem Wunsch, einen Perl-Interpreter in ein anderes C- oder C++ - Programm einzubetten. Es musste geändert werden, wie Perl funktioniert, so dass es alle seine globalen Daten (globale Variablen und kompilierter Code) pro Interpreter-Objekt isoliert, statt davon auszugehen, dass es der einzige Perl-Interpreter ist, der in diesem Prozess läuft. Von dort aus wurde eine Vielzahl von Perl-Interpretern innerhalb eines Perl-Interpreters verwendet, um unter Windows fork
zu emulieren. Endlich 5,6 Threads, die auf dieser umfangreichen Arbeit aufbauen.
http://stackoverflow.com/questions/9973860/use-cases-for-reads-interpreter-threads-in-perl-and-rationale-for-using-or – user454322
Ich empfehle dringend zu lesen [this] (http://www.perlmonks.org/index.pl?node_id=288022) vor der Verwendung "Perl Threads" in jedem Projekt .. – PSIAlt
Weiterhin in Perl 5.20 Release Notes: Interpreter-basierte Threads werden nun abgeraten Die "Interpreter- Based Threads "von Perl sind nicht das schnelle, leichte System für Multitasking, das man erwarten oder erwarten könnte. Threads sind so implementiert, dass sie leicht missbraucht werden können. Nur wenige Menschen wissen, wie man sie richtig einsetzt oder können helfen. – Rob11311