Đây là lần theo dõi my previous question.Hủy tương lai và hứa hẹn tại Scala
Giả sử tôi có nhiệm vụ thực hiện cuộc gọi chặn gián đoạn. Tôi muốn chạy dưới dạng số Future
và hủy bằng phương thức failure
Promise
.
Tôi muốn các hủy để làm việc như sau:
Nếu một hủy nhiệm vụ trước nó xong tôi muốn các nhiệm vụ để hoàn thành "ngay lập tức", làm gián đoạn cuộc gọi chặn nếu nó đã bắt đầu và tôi muốn
Future
để gọionFailure
.Nếu một hủy nhiệm vụ sau nhiệm vụ kết thúc, tôi muốn có được một tình trạng nói rằng hủy thất bại kể từ khi nhiệm vụ đã hoàn thành.
Có hợp lý không? Có thể thực hiện trong Scala không? Có bất kỳ ví dụ nào về việc triển khai như vậy không?
Cảm ơn. Giả sử tôi thực hiện một số cuộc gọi chặn _interruptible_ thay vì tính toán. Làm cách nào tôi có thể sửa đổi mã ở trên để làm gián đoạn chuỗi? – Michael
Bạn sẽ phải thêm một var đồng bộ đặt chuỗi hiện tại dưới một khóa khi tính toán bắt đầu, và sau đó lấy khóa ở cuối và xóa var. Và hủy bỏ sẽ lấy khóa và gọi ngắt trên các chủ đề thiết lập, nếu có, hoặc bảo lãnh nếu null. –
phải là 'while (! Future.isCompleted && moreWork) continueCalculation'? – sourcedelica