2009-03-25 16 views
17

इसका मतलब था: जब आप अपने ऐप साइड इफेक्ट्स को मुफ्त में डिज़ाइन करते हैं, तो क्या एफ # कोड स्वचालित रूप से सभी कोरों में वितरित किया जाएगा?क्या एफ # आपको स्वचालित समांतरता प्रदान करता है?

उत्तर

15

नहीं, मुझे डर नहीं है। यह देखते हुए कि एफ # शुद्ध कार्यात्मक भाषा (सख्त अर्थ में) नहीं है, इसलिए ऐसा करना मुश्किल होगा, इसलिए मुझे विश्वास है। एफ # में समांतरता का अच्छा उपयोग करने का प्राथमिक तरीका Async वर्कफ़्लो (मुख्य रूप से Async मॉड्यूल के माध्यम से मुझे विश्वास है) का उपयोग करना है। टीपीएल (टास्क समांतर लाइब्रेरी), जिसे .NET 4.0 के साथ पेश किया जा रहा है, एफ # में समान भूमिका निभाने जा रहा है (हालांकि विशेष रूप से इसका उपयोग सभी .NET भाषाओं में भी समान रूप से किया जा सकता है), हालांकि मैं यह नहीं कह सकता कि मैं ' मुझे यकीन है कि यह मौजूदा एसिंक फ्रेमवर्क के साथ एकीकृत करने जा रहा है। शायद माइक्रोसॉफ्ट बस सब कुछ के लिए टीपीएल के उपयोग की सलाह देगा, या शायद वे दोनों एक विकल्प के रूप में छोड़ देंगे और अंत में एक वास्तविक तथ्य बन जाएगा ...

वैसे भी, यहां अतुल्यकालिक प्रोग्रामिंग/वर्कफ़्लो पर कुछ लेख दिए गए हैं आपको शुरू करने के लिए एफ # में।

+0

"यह देखते हुए कि F # नहीं है एक शुद्ध कार्यात्मक भाषा "। असल में, शुद्धता अप्रासंगिक है। –

+0

@ जोन: यही वह जगह है जहां आप गलत हैं। यह बहुत प्रासंगिक है। संकलक इस तरह की आवश्यक मान्यताओं को नहीं बना सकता है। – Noldorin

+0

हमने दशकों तक फोर्ट्रान जैसी अनिवार्य भाषाओं के लिए वेक्टरिंग कंपाइलर्स बनाए हैं। मेरा मुद्दा यह था कि वे मल्टीकोर समांतरता के संदर्भ में शुद्धता के रूप में व्यावहारिक रूप से बेकार साबित हुए। –

1

नहीं, यह नहीं होगा। एफ # द्वारा समर्थित कई तंत्रों में से एक के माध्यम से आपको अभी भी अन्य थ्रेडों के लिए स्पष्ट रूप से मार्शल कॉल करना होगा।

3

नहीं, मुझे पूरा यकीन है कि यह आपके लिए स्वचालित रूप से समानांतर नहीं होगा। इसे पता होना चाहिए कि आपका कोड साइड-इफेक्ट मुक्त था, जो साबित करना मुश्किल हो सकता है, एक चीज़ के लिए।

बेशक, एफ # इसे आसान बना सकता है आपके कोड को समानांतर करने के लिए, विशेष रूप से यदि आपके पास कोई दुष्प्रभाव नहीं है ... लेकिन यह एक अलग मामला है।

+0

क्या शुद्ध और अशुद्ध कार्यों के बीच एफ # की विशिष्ट प्रणाली नहीं है? इसलिए यह नहीं होना चाहिए कि एक ऑपरेशन को साइड-इफेक्ट मुक्त करना मुश्किल था। –

+0

धन्यवाद जॉन। आपको साबित करके, आपको अनुबंधों जैसी सामग्री का उपयोग करना होगा? –

+0

मुझे उस भेद के बारे में पता नहीं है, लेकिन यह कहने का एक लंबा रास्ता है कि यह वहां नहीं है। संभवतः ढांचे के साथ किसी भी बातचीत में कटौती - और अपवादों के बारे में क्या? –

1

मेरी समझ यह है कि यह Parallel Extensions is being modified पर इसे F # द्वारा उपभोग करने योग्य नहीं होगा। जो इसे स्वचालित रूप से बहु-थ्रेड नहीं करेगा, इसे हासिल करना बहुत आसान बनाना चाहिए।

+0

अच्छी पकड़ रिचर्ड ... कम नींद में चल रहा है मानना ​​है कि मैंने लिखा है कि – JoshBerke

2

अन्य लोगों की तरह, एफ # स्वचालित रूप से कोरों में स्केल नहीं होगा और फिर भी जोश ने उल्लेख किया है कि समांतर एफएक्स के बंदरगाह जैसे ढांचे की आवश्यकता होगी।

एफ # आमतौर पर समांतर प्रसंस्करण के लिए संभावित रूप से जुड़ा हुआ है क्योंकि यह अपरिवर्तनीय वस्तुओं के लिए डिफ़ॉल्ट है, कई परिदृश्यों के लिए लॉक करने की आवश्यकता को हटा रहा है।

1

ठीक है, आप अपने जवाब है, लेकिन मैं अभी जोड़ने के लिए मुझे लगता है कि इस तथ्य यह है कि से उत्पन्न एफ # का सबसे महत्वपूर्ण सीमा है चाहता था यह हाइब्रिड अनिवार्य/कार्यात्मक भाषा है।

मैं एफ # में कुछ एक्सटेंशन देखना चाहता हूं जो एक समारोह को शुद्ध होने की घोषणा करता है। यही है, इसका कोई दुष्प्रभाव नहीं है जो फ़ंक्शन के प्रकार से इंगित नहीं होता है। विचार यह होगा कि एक समारोह केवल तभी शुद्ध होता है जब यह अन्य "ज्ञात शुद्ध" कार्यों का संदर्भ देता है। बेशक, यह केवल तब उपयोगी होगा जब यह आवश्यक हो कि एक प्रतिनिधि पैरामीटर के रूप में पारित एक प्रतिनिधि एक शुद्ध कार्य संदर्भित करता है।

+0

धन्यवाद डैनियल। मैंने सोचा कि एफ # में "शुद्ध" कीवर्ड था। यह नहीं है? –

8

एफ # इसे स्वचालित नहीं बनाता है, यह बस इसे आसान बनाता है।

फिर भी Luca's PDC talk से लिंक करने का एक और मौका। 52:20 से शुरू होने वाले आठ मिनट एफ # एसिंक वर्कफ़्लोज़ का एक शानदार डेमो हैं। यह जबरदस्त है!

+0

मैं इसे देख लूंगा, धन्यवाद। –

2

शुद्धता एनोटेशन पर: Code Contracts में एक शुद्ध विशेषता है। मुझे याद है कि बीसीएल के कुछ हिस्सों में पहले से ही इसका इस्तेमाल किया जा रहा है। संभावित रूप से, इस विशेषता का उपयोग समांतरता ढांचे के साथ भी किया जा सकता है, लेकिन मुझे इस बिंदु पर इस तरह के काम से अवगत नहीं है। साथ ही, मुझे यह भी सुनिश्चित नहीं है कि एफ # के भीतर कोड संपर्क कितने अच्छे हैं, इसलिए यहां बहुत सारे अज्ञात हैं।

फिर भी, यह देखना दिलचस्प होगा कि यह सब सामान एक साथ कैसे आता है।

+0

मुझे लगता है कि मैंने बीसीएल में परावर्तक में कुछ देखा है। –

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