Như tôi đã biết, Ruby 1.9 sử dụng các luồng hệ điều hành nhưng chỉ có một luồng vẫn thực sự chạy đồng thời (mặc dù một luồng có thể đang chặn IO trong khi một luồng khác đang xử lý). Các ví dụ luồng tôi đã thấy chỉ sử dụng Thread.new
để khởi chạy một chuỗi mới. Đến từ một nền tảng Java, tôi thường sử dụng các nhóm luồng để không khởi chạy nhiều luồng mới vì chúng là "nặng".Ruby 1.9 thread pools
Có cấu trúc hồ bơi được xây dựng thành ruby không? Tôi không thấy một trong các thư viện ngôn ngữ mặc định. Hoặc là có một viên đá quý tiêu chuẩn thường được sử dụng? Kể từ khi hệ điều hành cấp luồng là một tính năng mới hơn của ruby, tôi không biết làm thế nào trưởng thành các thư viện được cho nó.
Cảm ơn. Tôi không thực sự có một trường hợp sử dụng ngay bây giờ, nhưng như tôi đã đọc cuốn sách cuốc, đây là một cái gì đó tôi không chắc chắn, nhưng bạn đã làm rõ. –
Tôi không hiểu trong khi mọi người đề cập rằng các chủ đề là vô dụng trong Ruby vì chúng không chạy đồng thời. Chúng thực sự vô dụng đối với các nhiệm vụ ràng buộc CPU nhưng chúng có thể rất hữu ích đối với bất kỳ IO chặn nào mà bạn muốn thực hiện song song. Ví dụ. yêu cầu HTTP đồng thời. – Kamchatka
Cảm ơn nhận xét. Tôi cần phải làm rõ thêm rằng các chủ đề không phải là vô ích trong Ruby, chỉ cần mọi người cần phải nhận thức được giới hạn của GIL vì các chủ đề không phải là không có phí. Đối với IO không chặn, cuộc gọi không đồng bộ dựa trên sự kiện C có thể phù hợp hơn. Xem http://blog.gregweber.info/posts/2011-06-16-high-performance-rb-part3 để biết thêm thông tin. – Wulfram