मैं scalaz.concurrent.Task के साथ अपनी एसिंक्रोनस प्रोसेसिंग को कार्यान्वित करना चाहता हूं। मैं इस प्रकार एक नया कार्य है कि काम करता है वापस जाने के लिए एक समारोह (Task[A], Task[B]) => Task[(A, B)]
की जरूरत है:यदि कोई दूसरा विफल रहता है तो एक कार्य को रद्द करने के लिए दो समानांतर कार्य कैसे लिखें?
- रन
Task[A]
औरTask[B]
समानांतर में और परिणाम के लिए इंतजार; - यदि कोई कार्य विफल रहता है तो को रद्द करें और इसे समाप्त होने तक प्रतीक्षा करें;
- दोनों कार्यों के परिणाम लौटाएं।
आप इस तरह के फ़ंक्शन को कैसे कार्यान्वित करेंगे?
कई अलग-अलग चीजें हैं _cancel_ का मतलब यहां हो सकता है। क्या आप सिर्फ गणना को तेजी से विफल करना चाहते हैं? फिर 'नोन्डेटर्मिनिज्म' पर 'दोनों' की तरह कुछ काम करेगा। यदि आप चक्रों को बर्बाद करने से बचना चाहते हैं (या आप अभी भी चल रहे गणना के प्रभावों को पूर्ववत करना चाहते हैं) तो यह अधिक जटिल होगा। –
हां, मैं चाहता हूं कि गणना अब के लिए तेजी से विफल हो। – Michael