मैं कई (> 1000) लंबे समय तक चलने वाले कार्यों को निष्पादित करने के लिए F # में टास्क समांतर लाइब्रेरी (टीपीएल) का उपयोग करना चाहता हूं।टीपीएल समांतर। लंबे समय तक चलने वाले कार्यों के साथ
Parallel.For(1, numberOfSets, fun j ->
//Long running task here
)
जब मैं इस शुरू ऐसा लगता है कि नेट लगातार उन दोनों के बीच एक बार में कार्यों के आरंभ करता है और बाउंस: यहाँ मेरे वर्तमान कोड है। बेहतर होगा अगर यह किसी कार्य पर तब तक रहे जब तक कि इसे अगले स्थान पर जाने से पहले नहीं किया जाता। यह संदर्भ स्विचिंग को कम करेगा।
शेड्यूलर को संकेत देने का कोई तरीका है? मुझे पता है कि संकेत प्रदान करना संभव है लेकिन मुझे स्पष्ट उदाहरण नहीं मिल रहे हैं या शेड्यूलर पहले से ही इसके बारे में स्मार्ट है और यह सिर्फ मेरी धारणा है कि बहुत सारे संदर्भ स्विच होते हैं। सहायता के लिए धन्यवाद!
+1, मेरे से सेकंड तेज :) :) –
क्या MaxDegreeOfParallelism आपकी मशीन पर कोर की संख्या पर निर्भर करता है? –
@ वालहुड: शायद हाँ यदि कार्य सीपीयू-बाध्य है, तो यदि कार्य आईओ-बाउंड (फ़ाइल प्रोसेसिंग, डीबी तक पहुंच) है तो शायद नहीं। हमारे मामले में यह मान सामान्य परिस्थितियों में 2/4 कोर पर ठीक काम करता था, कुछ और परिष्कृत प्रयास करने का कोई वास्तविक कारण नहीं था - यह ऐसा प्रोग्राम नहीं है जो उदाहरण के लिए 16 कोर सुपर-मशीन पर चलने की संभावना है। – MiMo