2010-06-17 30 views
10

Là mạng của Ruby :: HTTP an toàn?Là mạng của Ruby :: HTTP an toàn?

(Ngoài các phương thức phiên bản_1_1 và phiên bản_1_2 mà nó nói rõ ràng là không)

+1

Giả sử bạn không ở trên MacRuby hoặc JRuby, có quan trọng không? Thời gian chạy không thực sự đa luồng, chỉ có một luồng có thể chạy cùng một lúc. – Theo

+0

Không quan trọng? Vì vậy, nếu net: http duy trì một số trạng thái toàn cầu cho kết nối của bạn và thời gian chạy chuyển đổi qua lại giữa hai chủ đề, không có gì sẽ đi sai? Tôi không biết nếu net: http là an toàn hay không, nhưng tôi biết câu trả lời của bạn là sai. – bridiver

Trả lời

2

Tôi sẽ không tin vào điều đó.

Năm 2008, matz wrote:

Đối với MRI (1.8.x) và YARV (1.9.x), mỗi C thực hiện phương pháp này bảo vệ bởi GIL (Global Interpreter Lock), do đó bạn don' t phải lo lắng. Nhưng nó có thể phụ thuộc vào từng triển khai.

Net :: HTTP nằm trong stdlib, có nghĩa là nó không được triển khai trong C (hoặc ít nhất, không được triển khai đầy đủ trong C). Tôi giả định rằng lưu ý của MATZ về GIL vẫn chính xác ngày hôm nay, điều này có nghĩa là GIL sẽ không được đặt trên Net :: HTTP. Vì vậy, tôi nghi ngờ nó sẽ là threadsafe.

tôi đã tiếc là không tìm thấy bằng chứng dứt khoát trong các tài liệu cho các phiên bản hiện tại của Ruby, mặc dù tôi cảm thấy nó cũng đáng nhắc đến bit này từ Concurrency in jruby:

Ít nhất các lớp này [lớp lõi và lớp trong stdlib] là không được coi là an toàn cho luồng và nếu bạn định cắt chúng đồng thời với các hoạt động khác, bạn sẽ muốn giới thiệu khóa (ví dụ: với Mutex): String, Array, Hash và bất kỳ cấu trúc dữ liệu nào bắt nguồn từ chúng .

Tôi cảm thấy tốt nhất là nên chơi an toàn bằng cách thêm khóa xung quanh Net :: HTTP hoặc sử dụng phương án thay thế an toàn.

+0

Làm cách nào để bạn thêm khóa @nick – bcackerman

+0

Tùy thuộc vào trường hợp sử dụng của bạn, bạn có thể chỉ cần xử lý từng yêu cầu dưới dạng nguyên tử. Nếu bạn cần trợ giúp với việc đó, hãy mở một câu hỏi mới hoặc chỉ sử dụng một thư viện khác được chứng minh là an toàn chủ đề. –

Các vấn đề liên quan