एक पैटर्न जो अब मैं कई बार आ चुका हूं, वह है जहां मूल्यों की एक सूची की जांच की जाती है ताकि उस पर कुछ परीक्षण मैप करके और यह देखा जा सके कि कोई भी या सभी तत्व पारित हो गए हैं या नहीं। विशिष्ट समाधान सिर्फ सुविधाजनक अंतर्निहित इन्स का उपयोग करना है all
और any
।
समस्या यह है कि ये सीरियल में मूल्यांकन करते हैं। कई मामलों में यह बहुत तेजी से मूल्यांकन करने की प्रक्रिया के साथ समानांतर होगा कि कोई भी धागा एक "गलत" all
या "सच" के लिए एक बार पूरा हो जाए any
। मुझे पूरा यकीन है कि नियंत्रण के उपयोग से शॉर्ट-सर्कुलेटिंग व्यवहार को लागू नहीं किया जा सकता है। समानांतर के रूप में इसे अंतर-प्रक्रिया संचार की आवश्यकता होती है और मैं इसे नियंत्रित करने के लिए नियंत्रण के पर्याप्त कहीं भी नहीं समझता हूं।
यह गणित में एक बहुत ही सामान्य पैटर्न है (उदाहरण के लिए मिलर-राबिन प्रेमलिटी) तो मुझे ऐसा लगता है कि कोई व्यक्ति शायद इसके लिए पहले से ही एक समाधान के साथ आया है, लेकिन स्पष्ट कारणों से "समानांतर या / और / किसी भी / सभी के लिए एक Google खोज कर रहा है haskell "कई प्रासंगिक परिणाम नहीं लौटाता है।
unamb
पुस्तकालय के साथ संभव है
pthreads
सी या ग्रीन थ्रेड्स हास्केल में हो) आप समवर्ती वेब अनुरोधों को संभालने के लिए कई webservers शुरू करते हैं, इसके बजाय आप एक प्रक्रिया में कई थ्रेड चलाते हैं! समतावाद पर भी लागू होता है। आप CPU के जितने भी धागे हैं, उतने स्पिन करें और अपने काम को समान रूप से विभाजित करें, इस प्रकार CPU बाध्य कार्यों का ध्यान रखें। अपने आप को समझाने के लिए इस लाइब्रेरी को आज़माएं github.com/lehins/haskell-scheduler