2016-10-13 2 views
13

नोडजेस मल्टीथ्रेडिंग ..क्या नोडज में मल्टीथ्रेडिंग हासिल करना संभव है?

मौसम नोडज में मल्टीटाइडिंग का उपयोग करना संभव है? अगर हाँ। नोडजेस में मल्टीटाइडिंग का उपयोग करने के फायदे और नुकसान क्या हैं। वे मॉड्यूल कौन से हैं जो नोडज में मल्टीथ्रेडिंग प्राप्त कर सकते हैं? मैं नोडजेस के लिए नौसिखिया हूं, मैंने कई ब्लॉगों से यह कहते हुए पढ़ा कि नोड सिंगल थ्रेडेड है। मुझे जावा मल्टीथ्रेडिंग पता है लेकिन मुझे मौसम पता होना चाहिए कि यह नोड में संभव है या नहीं।

उत्तर

2

नहीं, आप node.js. में थ्रेड का उपयोग नहीं कर सकते हैं। यह कोड निष्पादन के एसिंक्रोनस मॉडल का उपयोग करता है। एसिंक्रोनस मॉडल के पीछे, नोड स्वयं धागे का उपयोग करता है। लेकिन जहां तक ​​मुझे पता है, उन्हें अतिरिक्त पुस्तकालयों के बिना ऐप में एक्सेस नहीं किया जा सकता है।

असीमित मॉडल के साथ आपको वास्तव में धागे की आवश्यकता नहीं है। ये रहा एक सरल उदाहरण। आम तौर पर, बहु-थ्रेडेड वातावरण में, आप प्रत्येक धागे में नेटवर्क अनुरोधों को मुख्य थ्रेड में कोड निष्पादित करने के लिए ब्लॉक नहीं करेंगे। एसिंक मॉडल के साथ, वे अनुरोध मुख्य धागे को अवरुद्ध नहीं करते हैं और अभी भी अन्य धागे में निष्पादित होते हैं, केवल विकास प्रक्रिया को सरल बनाने के लिए यह केवल आपके से छिपा हुआ है।

बज़ज़ा द्वारा this comment भी देखें।

+0

लेकिन multithrading के लिए NPM में सूचीबद्ध मॉड्यूल, आप क्या से कुछ इस बारे में क्या कहना ... –

+0

@UmakantMane, अधिक जानकारी के लिए (पढ़ने [जुड़ा हुआ जवाब] http://stackoverflow.com/questions/18613023/how करने वाली बनाने-धागे में NodeJS)। उन धागे को मूल रूप से उजागर नहीं किया जाता है और आपको उन तक पहुंचने के लिए विशेष पुस्तकालयों का उपयोग करना चाहिए। मेरा मुद्दा यह था कि आपको इसकी आवश्यकता नहीं हो सकती है। –

+0

धन्यवाद, आप NodeJS में multithreading –

27

हां और नहीं। शुरुआत से शुरू करते हैं। आई/ओ और अन्य ऐसे कार्यों के एक धागा पूल से चलाने - - Node.js द्वारा निष्पादित जावा स्क्रिप्ट कोड चलाता है, सभी व्यावहारिक के लिए क्यों NodeJS एकल पिरोया है, यहाँ से समझाया गया है Why is Node.js single threaded?

जबकि Node.js ही बहु-क्रम है उद्देश्यों, एक धागे में। यह नोड.जेएस की सीमा नहीं है, बल्कि वी 8 जावास्क्रिप्ट इंजन और जावास्क्रिप्ट कार्यान्वयन के लिए आम तौर पर है।

नोड.जेएस में एकाधिक नोड.जेएस प्रक्रियाओं को क्लस्टर करने के लिए मूल तंत्र शामिल है, जहां प्रत्येक प्रक्रिया एक अलग कोर पर चलती है। लेकिन उस क्लस्टरिंग तंत्र में श्रमिकों के बीच कोई मूल रूटिंग तर्क या साझा राज्य शामिल नहीं है।

आम तौर पर और अधिक स्पष्ट रूप से कथन यह है कि, प्रत्येक node.js प्रक्रिया एकल थ्रेड होती है। अगर आप एकाधिक धागे चाहते हैं, तो आपके पास कई प्रक्रियाएं भी होनी चाहिए। उदाहरण के लिए, आप इसके लिए बाल प्रक्रिया का उपयोग कर सकते हैं, जिसे यहां वर्णित किया गया है http://nodejs.org/api/child_process.html। और सिर्फ अपनी जानकारी के लिए, यह आलेख देखें, बहुत ही निर्देशक और अच्छी तरह से लिखा गया है, और संभवत: आपकी मदद करेगा, अगर आप child_processes के साथ काम करना चाहते हैं - https://blog.scottfrees.com/automating-a-c-program-from-a-node-js-web-app

उपर्युक्त सभी के बावजूद, आप एक प्राप्त कर सकते हैं सी ++ और देशी नोडजेस सी ++ विकास के साथ बहु-थ्रेडिंग की तरह।

सबसे पहले

How to create threads in nodejs

Node.js C++ addon: Multiple callbacks from different thread

Node.js C++ Addon: Threading

https://bravenewmethod.com/2011/03/30/callbacks-from-threaded-node-js-c-extension/

बेशक

आप पाते हैं और एक लाभ उठा सकते हैं ये उत्तर देखें, शायद वे आपकी मदद करेंगे, बहुत सारे नोड प्लगइन्स जो "बहु" -थ्रेडिन दे रहे हैं जी क्षमता: https://www.npmjs.com/search?q=thread

इसके अलावा, आप जाँच कर सकते हैं JXCorehttps://github.com/jxcore/jxcore JXCore Node.js का कांटा है और Node.js क्षुधा से अधिक थ्रेड एक ही प्रक्रिया के भीतर स्थित पर चलाने के लिए अनुमति देता है। तो शायद JXCore आपके लिए एक समाधान है।

"नोड.जेएस में बहु-थ्रेडिंग का उपयोग करने के फायदे और नुकसान क्या हैं?"

यह इस बात पर निर्भर करता है कि आप क्या करना चाहते हैं। यदि आप लाभ उठाते हैं और Node.js स्रोतों का सही ढंग से उपयोग करते हैं, और आपके "बहु" - थ्रेडेड प्लगइन्स या प्रक्रियाओं या जो भी हो, तो V8 या Node.js के मूल से कुछ भी "हैक" या दुरुपयोग न करें!

प्रत्येक उत्तर में, सही उत्तर "नौकरी के लिए सही उपकरण का उपयोग करें" है। बेशक, चूंकि नोड डिज़ाइन एकल-थ्रेडेड है, इसलिए आप मल्टीथ्रेडिंग के लिए बेहतर दृष्टिकोण प्राप्त कर सकते हैं।

एक तकनीक जो बहुत से लोग उपयोग करते हैं, सी ++, जावा, पायथन आदि में अपने बहु-थ्रेडेड एप्लिकेशन को बनाना है और फिर, वे इसे स्वचालन और नोड.जेएस child_process के माध्यम से चलाते हैं (तृतीय-पक्ष एप्लिकेशन स्वचालन के साथ असीमित रूप से चलाता है , आपके पास बेहतर प्रदर्शन (उदाहरण के लिए सी ++ ऐप) है, और आप इनपुट भेज सकते हैं और अपने Node.js एप्लिकेशन में और आउटपुट प्राप्त कर सकते हैं)।

नुकसान बहु सूत्रण Node.js

चेक करें: https://softwareengineering.stackexchange.com/questions/315454/what-are-the-drawbacks-of-making-a-multi-threaded-javascript-runtime-implementat

ध्यान रखें कि आप इसे संशोधित करके Node.js में एक शुद्ध बहु वातावरण बनाना चाहते हैं, मुझे लगता है यह जटिलता के कारण कठिन, जोखिम भरा होगा, इसके अलावा आपको हमेशा नए वी 8 या नोड रिलीज के साथ अद्यतित होना होगा जो शायद इसे प्रभावित करेगा।

उम्मीद है कि इससे मदद मिलती है।

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