मेरे पास vals: Iterable[T]
और किसी भी प्रासंगिक साइड इफेक्ट्स के बिना एक लंबे समय तक चलने वाला फ़ंक्शन है: f: (T => Unit)
। अभी यह स्पष्ट रास्ते में vals
लिए आवेदन किया है:स्कैला में समवर्ती मानचित्र/foreach
vals.foreach(f)
मैं f
के लिए कॉल चाहते हैं समवर्ती (उचित सीमा के भीतर) किया जाना चाहिए। क्या स्काला बेस लाइब्रेरी में कहीं कोई स्पष्ट कार्य है? की तरह कुछ:
Concurrent.foreach(8 /* Number of threads. */)(vals, f)
जबकि f
यथोचित लंबी चलने वाली है, यह इतना छोटा हो कि मैं प्रत्येक कॉल के लिए एक धागा लागू की भूमि के ऊपर नहीं करना चाहती है, तो मैं एक धागा पूल के आधार पर कुछ के लिए देख रहा हूँ।
सावधान रहें कि 'vals' एक सख्त संग्रह है - यदि यह आलसी है (और स्कैला 2.7 में इसमें' रेंज 'वर्ग शामिल है), वायदा तब तक नहीं बनाए जाएंगे जब तक कि प्रत्येक को' foreach 'द्वारा आवश्यक न हो, और समानांतर में कुछ भी नहीं होगा। –
मुझे लगता है कि हम 'मानचित्र' और वर्तमान 'foreach' के बीच एक और' foreach' कॉल इंजेक्शन द्वारा उस समस्या को हल कर सकते हैं। इस प्रकार: 'vals नक्शा {x => भविष्य {f (x)}} foreach {x => x} foreach {_()} ' –
यह एक नक्शा होगा जिसे हमें इंजेक्ट करना होगा, एक और foreach नहीं? और यह मुझे स्पष्ट नहीं है कि आलसी संग्रह का नक्शा सख्त है। आरे को कॉल करने का सबसे सुरक्षित तरीका हो सकता है। –