2012-11-27 17 views
7

Tôi tự hỏi những gì khác nhau giữa các tùy chọn 'THREADS' và 'PTHREAD' khi tôi biên dịch perl 5.16 (và phiên bản khác) từ nguồn cổng trong freebsd?chủ đề so với pthread trong perl

PTHREAD có phải là quá trình phân luồng không? (bởi vì -pthread) Và nếu như vậy, là nó thích 'THREADS'? (bởi vì nó có vẻ được chọn trước) ngay cả trên freebsd? Và 'THREADS' (chủ đề hạt nhân) là gì? Mặt khác? Những ưu và khuyết điểm là gì?

Tôi có thể sử dụng cả hai trong một lần cài đặt không? Nó có ý nghĩa không?

Không có nhiều thứ để tìm xung quanh kết hợp với perl, theo như tôi thấy.

thanks a lot jimmy

+0

hum ... Perl chỉ có một mô hình luồng ('-Dusethreads') – ikegami

+0

hmm :) Ok biên dịch nó bằng 'THREADS' thay đổi cấu hình args từ -Dusethreads = n thành -Dusethreads = y. 'PTHREADS' thêm '-pthread' vào ldflags. Vì vậy, tôi đoán nó không chỉ đùa thôi. Nó tạo nên sự khác biệt, nhưng tôi tự hỏi điều gì ?! :/ –

+1

Perl từng có một mô hình luồng khác nhau. Nó đã rất hỏng. Có thể bạn đang cố gắng truy cập điều đó. – ikegami

Trả lời

17

Sử dụng đề là như những người khác đã mô tả nó tất nhiên.

Liên kết với pthread có nghĩa là perl của bạn được tạo bằng cờ -pthread. Điều này có một hiệu ứng tinh tế nhưng quan trọng. Nó có nghĩa là khi perl khởi động, dữ liệu libc duy trì trạng thái cho các luồng được khởi tạo. Điều này có nghĩa rằng nếu perl của bạn gọi dlopen() trên một thư viện được tạo luồng, nó sẽ hoạt động đúng, thay vì treo.

PS. Tôi thực sự là người đã viết và cam kết tùy chọn PTHREAD tới cảng. Tôi thực sự phát hiện ra một số mô-đun perl mà dlopen() 'd một số libs luồng và gây perl treo. Đã cho tôi một thời gian để tìm ra lý do tại sao. Tin tôi đi, bạn muốn tùy chọn PTHREAD. Tôi thực sự đang nghĩ đến việc xóa tùy chọn tắt nó đi. Để biết thêm thông tin, xem FreeBSD PR 163512 và 163878. Có lẽ chúng ta nên đẩy tùy chọn này ngược dòng để perl sử dụng điều này theo mặc định trên FreeBSD. Bất cứ điều gì có thể gọi dlopen() thực sự nên được xây dựng với -pthread.

+0

Tôi chỉ yêu bạn!Và có, liên quan đến những gì bạn đã đề cập và tham chiếu, có vẻ như là một ý tưởng hay để làm cho nó chỉ mặc định. Cảm ơn một lần nữa! –

+0

Cảm ơn bạn đã giải thích này. Tôi đã đề xuất luôn liên kết perl với pthreads: https://rt.perl.org/Public/Bug/Display.html?id=122906 –