HawtDispatch được thiết kế để là một hệ thống đơn lẻ có kích thước cố định rộng. Nó cung cấp dụng cụ 2 hương vị của Java Chấp hành viên:
- văn Queue toàn cầu: đối tượng Runnable Submitted được thực hiện đồng thời (Bạn nhận được tác dụng tương tự sử dụng một chấp hành viên
Executors.newFixedThreadPool(n)
)
- nối tiếp văn Queue: đối tượng Runnable Submitted được thực hiện nối tiếp (Bạn nhận được hiệu ứng tương tự bằng cách sử dụng một người thực hiện
Executors.newSingleThreadExecutor()
)
Không giống như mô hình thực thi java tất cả hàng đợi công văn toàn cầu và chia sẻ một hồ sơ kích thước cố định duy nhất. Bạn có thể sử dụng hàng nghìn hàng đợi công văn nối tiếp mà không cần tăng số lượng chuỗi của bạn. Hàng đợi công văn nối tiếp có thể được sử dụng như hộp thư Erlang để thúc đẩy các ứng dụng kiểu diễn viên phản ứng.
Vì HawtDispatch đang sử dụng một hồ bơi có kích thước cố định để xử lý tất cả các lệnh thực thi hàng đợi toàn cầu và nối tiếp, tất cả các nhiệm vụ Runnable mà nó thực thi phải không bị chặn. Theo cách này, nó tương tự như kiến trúc NodeJS, ngoại trừ nó sử dụng nhiều luồng thay vì chỉ một.
So với Netty, HawtDispatch không phải là khuôn khổ để xử lý dữ liệu ổ cắm thực sự. Nó không cung cấp một khuôn khổ cho cách mã hóa/giải mã, đệm và xử lý dữ liệu socket. Tất cả những gì nó làm là thực thi một người dùng được cấu hình Runnable khi dữ liệu có thể được đọc hoặc ghi trên ổ cắm không chặn. Đó là vào bạn ứng dụng sau đó để thực sự đọc/ghi dữ liệu socket.
Nguồn
2012-02-19 14:20:05
Cảm ơn @Hiram. Tôi hy vọng bạn mở rộng tài liệu HawtDispatch một chút để giới thiệu cho những người không biết gì về libdispatch của Apple. Thành thật mà nói, mô tả này là một khởi đầu tốt. Có lẽ một cái gì đó mà mở rộng trên những lợi ích của HD hơn chỉ bằng cách sử dụng Executors. – Shahbaz
@Shahbaz GCD có đặc quyền * điều chỉnh * kích thước của hồ bơi tùy thuộc vào số lượng lõi CPU có sẵn và mức độ bận của chúng hiện tại. Tôi đã nhìn thấy nó tăng số lượng thread khi nhiều công việc trong hàng đợi là I/O bị ràng buộc, do đó giữ CPU bận rộn. Tuy nhiên HawtDispatch dường như không làm điều đó. – adib