Tôi đang sử dụng tiết kiệm Apache trong C++ trên Windows và tôi muốn yêu cầu bạn trợ giúp hủy bỏ hoạt động đọc chặn đang diễn ra. Thao tác đọc (ví dụ - TProtocol :: readByte) bị chặn cho đến khi nhận được dữ liệu. Khi tôi đóng giao thông vận tải từ một chủ đề khác, tôi nhận được một xác nhận không thành công về một con trỏ null.Hủy hoạt động đọc chặn trong Tiết kiệm
Có cách nào khác để hủy hoạt động đọc bị chặn không?
Trong trường hợp này, mọi triển khai TProtocol sẽ không thể phân biệt được giữa "máy chủ chưa gửi dữ liệu" và "người dùng muốn hủy thao tác". Vì chúng tôi không hoạt động qua kết nối nhanh, chúng tôi thực sự cần phân biệt giữa hai trường hợp đó. – Alex
Tại sao bạn quan tâm đến TProtocol? Sẽ có một TimeoutException ném cho cả hai trường hợp sau khi cuộc gọi RPC, và bạn có thể quyết định những gì tiếp theo. – secmask
Vì người dùng mã giao tiếp của chúng tôi sẽ nhận ngoại lệ này trong trường hợp * hợp pháp * mà phản hồi của máy chủ chưa đến. Nếu thời gian chờ của tôi quá dài, phản hồi của việc hủy sẽ quá chậm đối với khách hàng của chúng tôi. Vì chúng tôi hoạt động trong băng thông thấp và môi trường có độ trễ cao, chúng tôi không thể đủ thời gian chờ vì chúng hầu như luôn luôn xảy ra. Tuy nhiên, chúng tôi vẫn muốn hủy. – Alex