यह धागे बनाम प्रक्रिया पर आता है।
ऑपरेटिंग सिस्टम विशेष रूप से डिज़ाइन किए गए थे ताकि प्रत्येक 'उपयोगकर्ता' ने सोचा कि उनके पास पूरा कंप्यूटर था - यही कारण है कि आप उदाहरण के लिए उपयोगकर्ता wwwrun के रूप में अपाचे चलाते हैं।
प्रोग्रामर होने के कारण प्रोग्रामर ने उस प्रतिमान को अधिभारित करना शुरू किया, पहले प्रत्येक मानव उपयोगकर्ता द्वारा कई 'नौकरियां' चलाते हुए। चूंकि ऑपरेटिंग सिस्टम कई उपयोगकर्ताओं के लिए डिज़ाइन किए गए थे, उस आर्किटेक्चर की ऊपरी स्केलिंग सीमा उपयोगकर्ताओं के लिए ऊपरी स्केलिंग सीमा को प्रतिबिंबित करती है - यही कारण है कि अपाचे, उदाहरण के लिए, 4,000 - 8,000 उपयोगकर्ताओं पर मरना शुरू कर देगा।
प्रक्रियाएं परिपक्व प्रतिमान हैं (मेरी प्रक्रिया आपके क्रैश नहीं हो सकती है)। जब हम धागे की शुरूआत को देखना शुरू करते हैं, तो चीजें बहुत अलग हो रही हैं। यहां हमारे पास ऐसे कार्यक्रम हैं जिनमें बाहरी अवरुद्ध गतिविधियां हैं (डिस्क पर प्रतीक्षा, आईओ पर इंतजार करना, स्मृति पर इंतजार करना) एक हाथ पर इंतजार करने में सक्षम होना चाहते हैं, और दूसरे पर काम करते हैं और धागे आपको यह करने और दो समस्याओं से निपटने की अनुमति देते हैं:
यदि आपके पास पर्याप्त प्रक्रियाओं क्योंकि ऑपरेटिंग सिस्टम यह
प्रत्येक प्रक्रिया महंगी है संभाल नहीं कर सकते क्योंकि, डिजाइन द्वारा, यह उपयोगकर्ता ऑपरेटिंग सिस्टम की पूरी शक्ति देता है नहीं मिल सकता है
समस्या धागे यह है कि वे अलगाव को तोड़ते हैं जिनके लिए प्रक्रियाओं को डिजाइन किया गया था। मेरा धागा आपके धागे को मिटा सकता है - त्रुटियां फैलती हैं।
जहां Erlang अलग है, कई मामलों में है। जो आर्मस्ट्रांग का PhD Thesisसॉफ़्टवेयर त्रुटियों की उपस्थिति में विश्वसनीय वितरित सिस्टम बनाना कहा जाता है।
विश्वसनीयता का मतलब है कि प्रक्रियाएं धागे से बेहतर होती हैं। समस्या यह है कि ऑपरेटिंग सिस्टम प्रक्रियाएं बहुत महंगे हैं क्योंकि वे मनुष्यों के लिए डिज़ाइन की गई हैं (आप मशीन के मालिक हैं) और कार्यक्रमों की समवर्ती इकाइयां नहीं हैं। एर्लांग वीएम में, वीएम में एक बहु-उपयोगकर्ता प्रणाली की पूर्ण शक्ति है (यह एक ऑपरेटिंग सिस्टम प्रक्रिया में चलती है) और प्रत्येक एरलांग प्रक्रिया में समवर्ती शक्ति की बहुत छोटी मात्रा होती है - अगर वह 'बड़ी मशीन' का उपयोग करना चाहती है वीएम से बातचीत करता है जो इसके लिए करता है। इसलिए एरलांग प्रक्रियाएं ऑपरेटिंग प्रक्रियाओं (और धागे) से काफी सस्ता होती हैं। आप बस स्पॉन, स्पॉन, स्पॉन। बॉक्स से बाहर Erlang VM 2 ** 8 प्रक्रियाओं के साथ शुरू होता है, लेकिन आप इसे लाखों तक टक्कर दे सकते हैं (यदि आपके पास पर्याप्त रैम है)।
इसके अलावा, जो ने अपने पीएचडी थीसिस के पहले खंड के पहले भाग में इसे विश्वसनीय सॉफ्टवेयर रखने के लिए दो कंप्यूटरों के साथ शुरू करने की आवश्यकता है। Erlang/OTP के साथ, पर समय लिखें, आपको नहीं पता कि आपका सॉफ्टवेयर किस कंप्यूटर पर चल रहा है। रनल समय पर एरलांग/ओटीपी क्लस्टर आपके कम्प्यूटेशनल काम को आवंटित करेगा। तो एक एरलांग प्रक्रिया देशी वितरित होती है, जैसे स्पॉन() (कांटा() के लिए एरलांग) और अर्थशास्त्र को पुनरारंभ करें।
क्योंकि एरलांग की अपनी प्रक्रियाएं हैं, इसका अपना शेड्यूलर और उसका कोड लोडर/बाइनरी प्रारूप है (एरलांग का अर्थ लिया जा सकता है या यह मूल बाइनरी में संकलित हो सकता है)।इसके बाद आप अतिरिक्त लाभों की एक टीम देते हैं - इससे पहले कि आप अपना एरलांग/ओटीपी एप्लीकेशन लिख लें, यह पहले से ही अपनी बाइनरी आउट आदि को गर्म कर सकता है,
तो, सुनिश्चित करें कि आप सी ++ में बहु-थ्रेडेड ऐप्स लिख सकते हैं - लेकिन यह आपका है त्रुटि प्रसार को रोकने और सिस्टम स्थिरता बनाने की जिम्मेदारी।
और सुनिश्चित करें कि आप एर्लांग (सीएम में सीएम लिखा गया है) में विश्वसनीय सॉफ्टवेयर बना सकते हैं, यही कारण है कि आप क्यों चाहते हैं? पुराने दिनों में, कंपनियों ने अपना खुद का 'ऑपरेटिंग सिस्टम' लिखा था, अब आप अपना खुद का ऑपरेटिंग सिस्टम लिख सकते हैं, लेकिन आप क्यों चाहेंगे? मजबूत परीक्षण कोड की लाखों लाइनें हैं जो 'करता है', जैसे एरलंग/ओटीपी सिस्टम में 1.5 एम लाइनों का मजबूत परीक्षण कोड है जो 'करता है'।
एरलांग का उपयोग उन चीजों का उपयोग करने के बारे में है जो अन्य लोगों ने लिखे हैं और केवल उन बिट्स का निर्माण कर रहे हैं जो आपकी कंपनी को प्रभावी बनाती हैं।
एरलांग में 'थ्रेड' नहीं है जिसमें एर्लांग प्रक्रियाएं हैं। Erlang प्रक्रियाओं के बारे में सोचने के रूप में 'धागे' एक प्रमुख श्रेणी गलती है और आपको गलत रास्ते का सही नेतृत्व करेंगे ... –
हाँ। मैं सिर्फ प्रोग्रामर के लिए 'थ्रेड' का जिक्र करता हूं जो केवल सी ++ को जानता है। –
** संबंधित: ** http://stackoverflow.com/questions/2708033/technically-why-is-processes-in-erlang-more- कुशल-than-os-threads – Jonas