2009-08-04 32 views
8

Sự khác nhau giữa việc gọi boost::asio::ip::tcp::socket 's read_some/write_some chức năng thành viên và gọi các chức năng miễn phí boost::asio::read/boost::asio::write là gì?Boost :: Asio đọc/ghi hoạt động

Cụ thể hơn:

Có lợi ích gì khi sử dụng cái kia không?

Tại sao cả hai được đưa vào thư viện?

Trả lời

13

read_some và write_some có thể quay lại ngay sau khi một byte đơn được chuyển. Như vậy bạn cần phải lặp lại nếu bạn muốn chắc chắn rằng bạn nhận được tất cả các dữ liệu - nhưng điều này có thể là những gì bạn muốn.

Các chức năng miễn phí là trình bao bọc xung quanh read_some và write_some và có các điều kiện kết thúc khác nhau tùy thuộc vào tình trạng quá tải. Thông thường, họ chờ đợi cho bộ đệm được chuyển hoàn toàn (hoặc một lỗi xảy ra, hoặc trong một số tình trạng quá tải một điều kiện hoàn thành rõ ràng xảy ra)

+0

Nhưng tại sao lại bao gồm cả hai? –

+0

Họ làm những việc khác nhau (điều kiện chấm dứt khác nhau). Tôi đã chỉnh sửa câu trả lời của tôi một chút, hy vọng nó rõ ràng hơn bây giờ. – bdonlan

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