2010-06-14 30 views
9

Tôi vừa mới xem xong phần thuyết trình "Clojure Concurrency" của Rick Hickey và tôi có một vài câu hỏi về chủ đề.Clojure rất nhiều chủ đề

Giả sử tôi có tình huống với nhiều Đại lý, giả sử 10.000 người trong số họ chạy một máy. Tôi không muốn có 10.000 luồng CPU chạy cùng một lúc, nhưng tôi không muốn các luồng bị chặn bởi các hành động của các luồng khác.

Trong ví dụ này, tôi sẽ không thực sự chờ trả lời, thay vào đó mỗi Đại lý sẽ gửi một hoặc hai tin nhắn, và sau đó đợi cho đến khi nhận được tin nhắn.

Làm cách nào để cấu trúc một chương trình như thế này mà không nhận được chuỗi 10k OS có thể sẽ làm chậm hệ thống.

Trả lời

2

Hãy nhớ rằng Clojure đang chạy trên cùng một JVM. Vì vậy, bạn có thể có 10.000 chủ đề Java, nhưng điều đó không tương đương với 10.000 quy trình hệ điều hành. Tôi nghi ngờ rằng các nhà sưu tập rác có thể sẽ trở thành nút cổ chai của bạn, vì vậy tôi sẽ tập trung vào điều chỉnh dấu chân của mỗi tác nhân. (Không cần phải nói rằng bạn nên kiểm tra và xác minh điều này trước khi điều chỉnh.)

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