2013-01-20 37 views
9

Tôi sẽ sử dụng boost :: asio lib cho dự án của mình. Nhưng nó không phải là khá rõ ràng mà chức năng tương ứng với select() từ bản địa socket c lib. Điều đó có sẵn trong asio không? Hoặc chúng tôi tăng cung cấp thay thế để tìm ra một ổ cắm đã sẵn sàng?chọn chức năng tăng :: asio

+1

+1 điều này có vẻ giống như một câu hỏi cơ bản, nhưng tôi đã tìm thấy người dùng mới vào thư viện asio thường bị nhầm lẫn bởi khái niệm này. –

Trả lời

5

Thiết kế cao cấp của Boost.Asio được dựa trên Proactor desing pattern. Vì vậy, bạn không cần phải thăm dò ý kiến ​​trên select. Thay vào đó, hãy gửi trình xử lý hoàn thành của bạn cho một hoạt động không đồng bộ và khi hoạt động được hoàn thành - trình xử lý hoàn thành sẽ được gọi.

6

Các tài liệu có specific section cho lập bản đồ API ổ cắm BSD gọi vào Asio tương ứng của họ tương đương

poll(), select(), pselect()

io_service::run(), io_service::run_one(), io_service::poll(), io_service::poll_one()

Lưu ý: trong kết mạc n với các hoạt động không đồng bộ.

Lưu ý rằng có sự khác biệt nhỏ giữa mỗi phương pháp io_service này, việc chọn đúng phương thức sẽ tùy thuộc vào thiết kế ứng dụng của bạn.

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