Tôi muốn triển khai xử lý không đồng bộ của mình với scalaz.concurrent.Task. Tôi cần một chức năng (Task[A], Task[B]) => Task[(A, B)]
để trả về một nhiệm vụ mới mà làm việc như sau:Cách soạn hai Tác vụ song song để hủy một tác vụ nếu một tác vụ khác không thành công?
- chạy
Task[A]
vàTask[B]
song song và chờ đợi kết quả; - nếu một trong các tác vụ không thành công thì hủy giây thứ hai và chờ cho đến khi nó kết thúc;
- trả về kết quả của cả hai tác vụ.
Bạn sẽ triển khai chức năng như thế nào?
Có một vài điều khác nhau _cancel_ có thể có nghĩa là ở đây. Bạn chỉ muốn tính toán thất bại nhanh? Sau đó, một cái gì đó như 'cả hai 'trên' Nondeterminism' sẽ làm việc. Nếu bạn cũng muốn tránh các chu kỳ lãng phí (hoặc bạn muốn hoàn tác các tác động của tính toán vẫn đang chạy) nó sẽ phức tạp hơn. –
Có, tôi chỉ muốn tính toán thất bại nhanh chóng ngay bây giờ. – Michael