Không chặn TCP/IP SocketChannels và Selector trong NIO giúp tôi xử lý nhiều kết nối TCP/IP với số lượng chủ đề nhỏ. Nhưng làm thế nào về UDP DatagramChannels? (Tôi phải thừa nhận rằng tôi không quen thuộc với UDP.)Không chặn UDP I/O khi chặn UDP I/O trong Java
Hoạt động gửi UDP dường như không chặn ngay cả khi DatagramChannel không hoạt động ở chế độ chặn. Có thực sự là một trường hợp DatagramSocket.send (DatagramPacket) khối do tắc nghẽn hoặc một cái gì đó tương tự? Tôi thực sự tò mò nếu có trường hợp như vậy và những trường hợp có thể tồn tại trong môi trường sản xuất.
Nếu DatagramSocket.send (DatagramPacket) không thực sự chặn và tôi sẽ không sử dụng DatagramSocket được kết nối và chỉ liên kết với một cổng, không có lợi thế nào khi sử dụng chế độ không chặn với DatagramChannel và Selector?
Điều gì sẽ xảy ra nếu bộ đệm hạt nhân bị ngập do ghi quá nhanh trên ổ cắm UDP? – trustin
Viết (cấp độ người dùng) của bạn sẽ chặn cho đến khi hạt nhân xóa các ổ cắm đó gửi đệm. – JLR
Vì vậy, có sự khác biệt rõ ràng giữa ổ cắm UDP chặn và không chặn, giống như sự khác biệt giữa chặn TCP và không chặn. Tôi đã viết một ứng dụng khách PoC đơn giản và tôi xác nhận rằng gửi UDP kênh không chặn() thường trả về 0, trong khi chặn một không bao giờ trả về 0. Cảm ơn! – trustin