Perl's documentation nói: Kể từ Perl 5.8, lập trình chủ đề đã sẵn sàng sử dụng một mô hình gọi là bài dịch mà cung cấp một thông dịch Perl mới cho mỗi threadHệ thống luồng của Perl hoạt động như thế nào?
Sử dụng ps -Lm <pid>
với chương trình dưới đây, tôi có thể thấy rằng đề chạy song song , tức là, chúng đang được chạy cùng lúc với các lõi khác nhau. Nhưng ngay cả khi có 4 chủ đề (3 và chính) ps aux
chỉ hiển thị một quy trình Perl.
- Điều này có nghĩa rằng có một toàn bộ thông dịch Perl trên mỗi thread?
- Are Chủ đề Perl ánh xạ tới chủ đề hệ thống?
- Nếu 2 là đúng, làm cách nào để có thể có nhiều thông dịch viên Perl trong một quy trình?
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
Tôi đặc biệt khuyên bạn đọc [this] (http://www.perlmonks.org/index.pl?node_id=288022) trước khi sử dụng "chủ đề Perl" trong bất kỳ dự án nào .. – PSIAlt
Hơn nữa trong ghi chú phát hành perl 5.20: Chủ đề dựa trên phiên dịch hiện không được khuyến khích "Trình thông dịch- chủ đề dựa trên "do Perl cung cấp không phải là hệ thống nhanh, nhẹ cho đa nhiệm mà người ta có thể mong đợi hoặc hy vọng. Các luồng được thực hiện theo cách khiến chúng dễ bị lạm dụng. Rất ít người biết cách sử dụng chúng một cách chính xác hoặc sẽ có thể cung cấp trợ giúp. – Rob11311