'Elixir' की concurrency का विश्लेषण
(underjord.io)- यह लेख लेखक के Elixir प्रोग्रामिंग भाषा के अनुभव पर चर्चा करता है, जिसमें concurrency और parallelism फीचर्स पर खास ध्यान दिया गया है.
- लेखक ने पिछले 5-6 वर्षों से Elixir को अपनी मुख्य प्रोग्रामिंग भाषा के रूप में इस्तेमाल किया है और इसके प्रदर्शन व बहुत कम कमियों को स्वीकार किया है.
- लेखक Elixir के concurrency मॉडल की तुलना PHP और Python से करते हैं, और तर्क देते हैं कि PHP का concurrency मॉडल web server पर निर्भर करता है, जबकि Python को Global Interpreter Lock (GIL) की वजह से concurrency में कठिनाइयों का सामना करना पड़ता है.
- Elixir, Erlang और Erlang virtual machine (BEAM) के ऊपर बनाया गया है, जिसे बड़ी संख्या में lightweight processes चलाने के लिए डिज़ाइन किया गया है, और यही concurrency व parallelism की नींव देता है.
- BEAM स्टार्ट होते समय schedulers के लिए threads बनाता है, और डिफ़ॉल्ट रूप से उपलब्ध हर CPU core के लिए एक के हिसाब से process scheduling संभालता है.
- लेखक समझाते हैं कि Elixir और Erlang की immutability-आधारित functional programming विशेषताएँ उच्च स्तर की concurrency और parallelism हासिल करने के लिए व्यावहारिक रूप से चुनी गई थीं.
- Elixir में processes state share नहीं करते, और वे केवल message passing के माध्यम से asynchronous तरीके से संवाद कर सकते हैं, जिससे सुरक्षित concurrent और parallel execution सुनिश्चित होता है.
- लेखक बताते हैं कि Elixir में code लिखते समय आमतौर पर ज़्यादातर web requests एक ही process के भीतर पूरी हो जाती हैं, इसलिए इन मूल सिद्धांतों को लेकर बहुत अधिक चिंता करने की ज़रूरत नहीं होती.
- Elixir concurrent कामों के लिए async/await mechanism देता है, जो Task module में implement किया गया है, और हर enumerable item के लिए Task चलाने वाला
Task.async_streamfunction भी मौजूद है. - लेखक निष्कर्ष निकालते हैं that Elixir और Erlang में concurrency और parallelism के बेहतरीन विकल्प बाद में जोड़े गए विचार नहीं हैं, बल्कि runtime की बुनियाद में ही बने हुए हैं, इसलिए BEAM पर concurrency न तो खतरनाक है और न ही कठिन.
अभी कोई टिप्पणी नहीं है.