19

मैं नए स्कैला 2.9 समांतर संग्रहों को देख रहा हूं और इसी तरह की चीजों के अपने क्रूर शौकिया संस्करणों को छोड़ने की उम्मीद कर रहा हूं। विशेष रूप से, मैं कांटा में शामिल पूल को प्रतिस्थापित करना चाहता हूं जो कि मेरे स्वयं के कुछ के साथ डिफ़ॉल्ट कार्यान्वयन को कम करता है (उदाहरण के लिए, कुछ ऐसा जो नेटवर्क पर कार्यों के मूल्यांकन को वितरित करता है)। मेरी समझ यह है कि यह केवल "स्टैकेबल संशोधनों" के स्कैला के प्रतिमान को लागू करने का विषय है, लेकिन संग्रह पुस्तकालय इतना डरा रहा है कि मुझे बिल्कुल यकीन नहीं है कि किन बिट्स को संशोधित करने की आवश्यकता है!मैं स्कैला 2.9 समांतर संग्रह के लिए फोर्क में शामिल पूल को कैसे बदलूं?

कुछ ठोस सवाल:

  1. यह सही है कि मानक समानांतर कार्यान्वयन कांटा के साथ बातचीत ForkJoinTasks में कोड के माध्यम से पूल केवल में शामिल होने?
  2. मुझे लगता है कि एक वैकल्पिक विशेषता है, FutureThreadPoolTasks। मैं एक संग्रह कैसे बनाऊंगा जो ForkJoinTasks के बजाय इस विशेषता का उपयोग करता है?
  3. मैं बस अभी तक एक और विकल्प (और शायद एक इसी बॉयलरप्लेट वर्ग कि AdaptiveWorkStealingTasks में घुलमिल और किसी भी तरह का दृष्टांत संग्रह उदाहरणों है कि इस नए विशेषता का उपयोग लिख सकते हैं?

(संदर्भ के लिए, लक्षण ऊपर उल्लिखित सभी परिभाषित कर रहे हैं । Tasks.scala में)

विशेष रूप से कोड उदाहरण बहुत स्वागत है

उत्तर

5

Here स्केल 2.10 में TaskSupport ऑब्जेक्ट्स को स्विच करने का वर्णन करने वाला एक दस्तावेज़ है।

16

बस कैसे चीजों को एक साथ फिट (जो मैं आप पहले से ही संदेह जानते हैं) पर कुछ और जानकारी प्रदान करने के लिए: कांटा-में शामिल होने के पूल के माध्यम से "में खामियों को दूर" है parallel पैकेज ऑब्जेक्ट का tasksupport मान जो scala.collection.parallel.TaskSupport विशेषता लागू करता है।

यह, बारी में, Tasks से विरासत (जो आप उल्लेख) और के रूप में इस तरह के आपरेशनों को परिभाषित करता है:

def execute[R, Tp](fjtask: Task[R, Tp]):() => R 

def executeAndWaitResult[R, Tp](task: Task[R, Tp]): R 

हालांकि, यह मेरे लिए तुरंत स्पष्ट नहीं है कि कैसे आप ओवरराइड व्यवहार जो स्पष्ट रूप से आयात किया जाता है कर सकते हैं अपने स्वयं के TaskSupport कार्यान्वयन की आपूर्ति करके खुद संग्रह से। उदाहरण के लिए, ParSeqLike लाइन 47 में:

import tasksupport._ 

वास्तव में, मैं अब तक यह लग रहा है समानांतरवाद की तरह निश्चित है यह कहते हुए जाना होगा नहीं overridable (जब तक कि मैं बहुत ज्यादा गलत है, हालांकि मैं अक्सर हूँ कर रहा हूँ)।

+1

पुष्टि - 2.9.0 संस्करण में यह अतिसंवेदनशील नहीं है, हालांकि इसे माना जा रहा है कि भविष्य में रिलीज में इसे कैसे अनुमति दी जाए। – axel22

+2

इसके लिए धन्यवाद, @oxbow_lakes। यह उत्सुक है कि 'फ्यूचर थ्रेडपूल टास्क' अनाथ लगता है। @ axel22, क्या आप मुझे इंगित कर सकते हैं कि (यदि कोई है) मेलिंग सूची पर चर्चा की गई है? –

+0

प्रतिबिंब का उपयोग करके इस मूल्य को बदलने के बारे में कैसे? – ziggystar

संबंधित मुद्दे