Perl's documentation mówi: Ponieważ Perl 5.8, programowanie wątek jest dostępna przy użyciu modelu o nazwie tłumacza wątki który dostarcza nowego Perl interpretera dla każdego wątkuJak działa system gwintowania Perl?
Korzystanie ps -Lm <pid>
z programem poniżej widzę, że nici biegną równolegle tzn. są one uruchamiane w tym samym czasie w różnych rdzeniach. Ale nawet jeśli istnieją 4 wątki (3 i główne) ps aux
pokazuje tylko jeden proces Perla.
- Czy to znaczy, że istnieje cała Perl interpreter na każdego wątku?
- Czy Perl wątki odwzorowane na wątków systemowych?
- Jeśli 2 jest prawdziwe, jak można mieć wielu tłumaczy Perla w ramach jednego procesu?
use threads;
$thr = threads->new(\&sub1);
$thr2 = threads->new(\&sub1);
$thr3 = threads->new(\&sub1);
sub sub1 {
$i = 0;
while(true){
$i = int(rand(10)) + $i;
}
}
$thr->join;
http://stackoverflow.com/questions/9973860/use-cases-for-ithreads-interpreter-threads-in-perl-and-rationale-for-using-or – user454322
Zalecam, aby przeczytać [to] (http://www.perlmonks.org/index.pl?node_id=288022) przed użyciem "Gwinty Perla" w dowolnym projekcie. – PSIAlt
Co więcej w perlu 5.20 Uwagi do wydania: Zinterpretowane wątki interpretera są teraz odradzane "Tłumacz" wątki bazujące "dostarczone przez Perl nie są szybkim, lekkim systemem do wielozadaniowości, którego można się spodziewać lub mieć nadzieję. Wątki są implementowane w sposób, który ułatwia ich niewłaściwe użycie. Niewiele osób wie, jak z nich korzystać poprawnie lub będzie w stanie udzielić pomocy. – Rob11311