मूल्य निर्धारण करना हमेशा एक मुश्किल बात है इसलिए मैं 3 मतभेदों को उजागर करूंगा। आप तय करते हैं कि वे "प्रो" या "कॉन" बाल्टी में आते हैं या नहीं।
जबकि दोनों जाओ और async आप एक सरल तरीके से async कोड लिखने की अनुमति देते हैं, .NET में जैसा कि आप जानते हैं कि आपका कोड का कौन सा हिस्सा async है और जो एक नहीं है (यानी आप स्पष्ट रूप से करने के लिए है async/प्रतीक्षा कीवर्ड का उपयोग करें)। जाओ में आपको यह जानने की आवश्यकता नहीं है - रनटाइम इसे "बस काम करता है" बनाता है, एसिंक कोड को चिह्नित करने के लिए कोई विशेष वाक्यविन्यास नहीं है।
गो डिज़ाइन को मानक लाइब्रेरी में किसी भी विशेष कोड की आवश्यकता नहीं है। .NET को प्रत्येक एसिंक ऑपरेशन के लिए मानक लाइब्रेरी में नया कोड जोड़ने की आवश्यकता है, अनिवार्य रूप से उन मामलों के लिए एपीआई सतह को दोगुना करना उदा। नया async http डाउनलोड एपीआई है और पुराना, गैर-एसिंक http डाउनलोड एपीआई पिछड़ा संगतता के लिए रहना है।
जाओ डिज़ाइन और कार्यान्वयन परिमाण के आदेश सरल है। रनटाइम कोड (शेड्यूलर) का एक छोटा टुकड़ा गोरोटाइन को निलंबित करने का ख्याल रखता है जो सिस्टम कॉल पर अवरुद्ध करता है और सोने की गोरोटाइन को जन्म देता है। मानक पुस्तकालय में किसी विशेष एसिंक समर्थन की कोई आवश्यकता नहीं है।
.NET कार्यान्वयन पहले उपर्युक्त नए एपीआई को जोड़ने की आवश्यकता है। इसके अलावा .NET कार्यान्वयन एसिंक/समकक्ष राज्य मशीनों में प्रतीक्षा के साथ कंपाइलर रीराइटिंग कोड पर आधारित है। यह बहुत चालाक है बल्कि जटिल भी है। व्यावहारिक परिणाम यह था कि पहले एसिंक सीटीपी को बग ज्ञात थे जबकि गो का कार्यान्वयन शुरुआत से काफी काम कर रहा था।
आखिरकार, यह वास्तव में कोई फर्क नहीं पड़ता। async/await .NET में async कोड लिखने का सबसे अच्छा तरीका है। गोरौटाइन्स गो में जाने का सबसे अच्छा तरीका है। दोनों महान हैं, खासकर अधिकतर भाषाओं में विकल्पों की तुलना में।
स्रोत
2011-09-20 04:07:28
वास्तव में बहुत अच्छा जवाब आपको धन्यवाद। मैं किसी ऐसे व्यक्ति के लिए निष्पादन गति प्रदर्शन की अवधि में और सोच रहा था जिसे 2 भाषा के बीच चयन करने की आवश्यकता है। – skyde
मुझे यकीन नहीं है कि मैं सहमत हूं। आप थ्रेड-प्रति-प्रक्रिया (चैनल सिंक्रोनस कतार) का उपयोग कर सी # और जावा में गो-स्टाइल गोरोटाइन लिख सकते हैं। कई मामलों में, आपको इस तथ्य की परवाह नहीं है कि गो गोराउटिन में कुछ हद तक ओएस धागे में मल्टीप्लेक्स किया जाता है। सी # async आपको वादा करता है कि कुछ कोड एक ही ओएस थ्रेड में चलेंगे, जो यूआई थ्रेड के मामले में बहुत अच्छा है। आप जाने के साथ ऐसा वादा नहीं कर सकते हैं। –
क्या कोई उदाहरण प्रदान कर सकता है कि गो में कितना इंतजार किया जाएगा? जहां तक मुझे पता है, ऐसी कोई बात नहीं है। – Kugel