क्या सी # 4.5 में एसिंक्रोनस कार्यान्वयन ठीक है जैसे कि एफ # 2 में थ्रेड का उपयोग किया जाता है?सी # में एसिंक्रोनस है जो एफ # में समान कार्यान्वयन है?
उत्तर
वे अलग हैं। मुख्य अंतर यह है कि सी # मानक .NET Task<T>
का उपयोग एसिंक्रोनस कंप्यूटेशंस का प्रतिनिधित्व करने के लिए करता है जबकि एफ # अपने स्वयं के प्रकार का उपयोग करता है जिसे Async<T>
कहा जाता है।
अधिक विशेष रूप से, प्रमुख अंतर हैं:
एसी # async विधि एक
Task<T>
कि तुरंत शुरू किया जाता है (गर्म कार्य मॉडल), जबकि एफ # एक गणना आप स्पष्ट रूप से शुरू कर दिया है कि बनाता है बनाता है (जनरेटर मॉडल)। इसका मतलब है कि एफ # गणना रचना करना आसान है (आप उच्च स्तरीय abstractions लिख सकते हैं)।एफ # में आप गणना भी शुरू करने के तरीके पर बेहतर नियंत्रण प्राप्त करते हैं। आप वर्तमान धागे पर इसे शुरू करने के लिए पृष्ठभूमि में का उपयोग करके गणना कर सकते हैं या
Async.StartImmediate
पर गणना कर सकते हैं।एफ # अतुल्यकालिक वर्कफ़्लो स्वचालित रूप से समर्थन रद्द है, तो आप
CancellationToken
के आसपास पारित करने के लिए नहीं है।शायद पहला बिंदु का एक और परिणाम यह है कि एफ # async workflows भी तो आप पुनरावर्ती workflows लिख सकते हैं पूंछ-प्रत्यावर्तन का समर्थन है, (यह सी # में आसानी से काम नहीं होगा, लेकिन सी # इस प्रोग्रामिंग शैली का उपयोग नहीं करता)
है
मैं इस विषय के बारे में विस्तृत लेख लिखा था: Asynchronous C# and F# (II.): How do they differ?
- 1. क्यों "एफ = एफ ++" सी में असुरक्षित है?
- 2. एफ # (या सी #) में कोई आर-ट्री कार्यान्वयन?
- 3. एफ # List.map सी # में बराबर है?
- 4. डिफ़ॉल्ट == कार्यान्वयन क्यों समान नहीं है?
- 5. जावा में मौजूद इंटरफेस का सी # "स्पष्ट कार्यान्वयन" है?
- 6. क्या कोई PHP कार्यान्वयन है जो JVM को लक्षित करता है (JRuby और Jython के समान)?
- 7. क्या सी ++ में इंटरफ़ेस का स्थिर पॉलीमोर्फिज्म कार्यान्वयन है जो vtable का उपयोग नहीं करता है?
- 8. क्या है -> एफ # में मतलब है?
- 9. एफ # रिकार्ड: फील्ड्स समान नाम
- 10. एक हैश कैसे बनाएं जो समान इनपुट के समान है?
- 11. सरल दृश्य स्टूडियो जो सी # और एफ #
- 12. क्या एफ # में मानक विकल्प वर्कफ़्लो है?
- 13. क्या एफ # में सामान्य अंकगणितीय समर्थन है?
- 14. लाइब्रेरी जो समान छवियों को पहचानती है
- 15. एफ # में, पाइपलाइनिंग का क्या अर्थ है?
- 16. एफ # उपज! ऑपरेटर - कार्यान्वयन और संभव सी # समकक्ष
- 17. क्या एफ # में सी # निहित ऑपरेटर बनाने के बराबर है?
- 18. सी # डिफ़ॉल्ट कीवर्ड के एफ # में समतुल्य क्या है?
- 19. क्या सी में कोई ठोस बड़ा पूर्णांक कार्यान्वयन है?
- 20. क्या कोई मेवेन लक्ष्य है जो 'dist' के समान है?
- 21. सी में एमवीआर का कार्यान्वयन?
- 22. सी में स्मार्ट सूचक कार्यान्वयन
- 23. क्या कोई योजना कार्यान्वयन है जो समानांतर है?
- 24. एफ # में बिल्कुल "bigint" क्या है?
- 25. सी # में कैशिंग है जो मेरे लिए सही दृष्टिकोण है?
- 26. क्या कोई प्रतिनिधि है जो सी # में मल्टीकास्टडिलेगेट नहीं है?
- 27. सी ++ में एक संकेतक नहीं है जो एक सूचक है?
- 28. क्या उद्देश्य-सी में LINQ के समान कुछ है?
- 29. जावा में सी # गुणों के समान कुछ है?
- 30. क्या सी # में एक Sizzle/jQuery चयनकर्ता कार्यान्वयन है?
धन्यवाद एक बहुत! लेकिन हुड के नीचे धागे कैसे उपयोग किए जाते हैं? डॉन सिमे ने अपनी पुस्तक 'एक्सपर्ट एफ #' में बताया कि एफ # थ्रेड होपिंग का उपयोग करता है। क्या यह सी # के लिए समान है या क्या कुछ मतभेद हैं? – Andries
एफ # में, जब आप विशिष्ट 'सिंक्रनाइज़ेशन कॉन्टेक्स्ट' (यानी जीयूआई थ्रेड) के साथ थ्रेड पर प्रारंभ करते हैं तो एसिंक्रोनस गणना इस 'सिंक्रनाइज़ेशन कॉन्टेक्स्ट' पर वापस कूद जाती है। मुझे यह दस्तावेज नहीं मिला कि यह सी # में कैसे व्यवहार करता है, लेकिन मेरे प्रयोगों से पता चलता है कि यह वही व्यवहार करता है - यानी, यदि आप जीयूआई थ्रेड पर 'प्रतीक्षा' करना शुरू करते हैं, तो आपकी शेष गणना जीयूआई थ्रेड पर चली जाएगी (भले ही आप जिस कंप्यूटाइटन की प्रतीक्षा कर रहे हैं वह दूसरे थ्रेड पर निरंतरता चलाता है)। –
@TomasPetricek एक बार फिर - एफ # के बारे में उत्कृष्ट जानकारी। –