Tôi đã đọc không nên sử dụng nhiều thao tác trên ổ cắm từ các luồng khác nhau. Nhưng nếu tôi gọi từ cùng một socket.async_read và socket.async_write tiếp theo (mà không cần chờ kết thúc trước đó)? Tôi có thể expetct rằng gọi lại thích hợp sẽ chạy khi một trong các hoạt động này được hoàn thành?Boost.asio: tôi có thể thực hiện async_read và async_write cùng một lúc từ một chuỗi không?
6
A
Trả lời
11
Tôi đã tìm thấy có, bạn có thể có một đơn đang chờ xử lý async_read
và một đơn đang chờ xử lý async_write
trên cùng một ổ cắm mà không có sự cố. Khi bạn gọi phương thức io_service::run()
, các cuộc gọi lại sẽ hoàn thành như mong đợi.
Phát hành nhiều async_reads trên cùng một socket hoặc nhiều async_writes trên cùng một socket, có thể dẫn đến hành vi không mong muốn, tùy thuộc vào loại ổ cắm có liên quan. Đặc biệt, việc sử dụng nhiều async_writes trên cùng một ổ cắm TCP có thể dẫn đến dữ liệu xảy ra theo thứ tự khác so với dự kiến ban đầu của bạn và việc trộn lẫn dữ liệu sẽ gửi đi. Trong UDP, nó có thể hợp lý hơn, nhưng tôi vẫn khuyên bạn nên chống lại nó.
Các vấn đề liên quan
- 1. Boost.Asio: Operation hủy vào async_read
- 2. Ruby: Có thể net/http thực hiện yêu cầu GET và POST cùng một lúc không?
- 3. Trong HTML5, tôi có thể phát cùng một âm thanh nhiều lần cùng một lúc không?
- 4. Tôi có thể chọn và cập nhật cùng một lúc không?
- 5. Có thể bật cả Bàn phím thực và Bàn phím mềm cùng một lúc không?
- 6. Có thể chạy nhiều AsyncTask cùng một lúc không?
- 7. Xác thực mẫu email cùng một lúc
- 8. Tôi có thể tra cứu NS và A cùng một lúc bằng cách sử dụng dig
- 9. có giới hạn số lượng chuỗi có thể chạy cùng một lúc không?
- 10. Thay thế 2 chuỗi cùng một lúc?
- 11. Làm thế nào tôi có thể có Perl lấy đầu vào từ STDIN một ký tự cùng một lúc?
- 12. Làm cách nào để tôi có thể thực hiện nhiều thư mục cùng một lúc bằng cách sử dụng subversion?
- 13. Tôi có thể lấy PTypeInfo từ một chuỗi không?
- 14. bash: đọc văn bản từ một chuỗi một ký tự cùng một lúc, với khoảng trắng
- 15. Tạo mới hoặc cập nhật thực thể hiện tại cùng một lúc với JPA
- 16. Tại sao tôi không thể cập nhật nhiều cột cùng một lúc bằng Từ khoá?
- 17. Có thể thực hiện đối sánh chuỗi một phần trên khóa chuỗi từ điển không?
- 18. Có thể xem nhiều nhánh git cùng một lúc cho cùng một dự án không?
- 19. boost.asio của socket nhận/gửi chức năng là xấu?
- 20. Có thể kết nối wifi và 3G cùng một lúc trên Android không?
- 21. Yếu tố có thể có bóng đổ bóng và chèn bóng cùng một lúc không?
- 22. Tôi có thể chia sẻ cùng một dự án nhật thực trên một kho lưu trữ SVN & GIT cùng một lúc không?
- 23. Không thể tạo một chi nhánh địa phương và từ xa (theo dõi) cùng lúc
- 24. iOS: Có thể gửi âm thanh ra cả tai nghe và loa cùng một lúc không?
- 25. VIM: Lưu và Chạy cùng một lúc?
- 26. Tôi có thể sử dụng jQuery find() cho nhiều loại phần tử cùng một lúc không?
- 27. Tôi có thể theo dõi nhiều sự kiện Google Analytics cùng một lúc không?
- 28. Đối với Java, tôi có thể nhập tất cả các gói cùng một lúc không?
- 29. Làm thế nào tôi có thể chomp mỗi dòng trong một mảng cùng một lúc?
- 30. Tại sao chúng ta không thể đọc một ký tự cùng một lúc từ System.in?
bạn có hỏi về ổ cắm TCP không? –