मुझे आश्चर्य है कि क्या modexes/locks को node.js. के भीतर डेटा एक्सेस के लिए आवश्यक है।
नहीं! घटनाओं को उस समय संभाला जाता है जब चलाने के लिए कोई अन्य कोड नहीं होता है, इसका मतलब है कि कोई विवाद नहीं होगा, क्योंकि वर्तमान में चल रहे कोड में केवल उस आंतरिक सरणी तक पहुंच है। नोड के साइड-इफेक्ट के रूप में एकल-थ्रेडेड होने के कारण, लंबी गणनाएं गणना के बाद तक अन्य सभी घटनाओं को अवरुद्ध कर देंगी।
मैं समझता हूं कि जावास्क्रिप्ट (और इस प्रकार Node.js) एकल थ्रेडेड है। मैं इस बात पर स्पष्ट नहीं हूं कि घटनाओं को कैसे संभाला जाता है। घटनाओं में बाधा आती है?
नहीं, घटनाएं बाधित नहीं होती हैं। उदाहरण के लिए, यदि आप अपने कोड में while(true){}
डालते हैं, तो यह किसी अन्य कोड को निष्पादित होने से रोक देगा, क्योंकि लूप को चलाने के लिए हमेशा एक और पुनरावृत्ति होता है।
यदि आपके पास लंबी दौड़ वाली गणना है, तो process.nextTick का उपयोग करना एक अच्छा विचार है, क्योंकि यह कुछ भी नहीं चल रहा है, जब यह कुछ भी चल रहा है (मैं इस पर अस्पष्ट हूं: नीचे दिया गया उदाहरण दिखाता है कि मैं ' शायद इसके बारे में सही है, शायद निर्बाध चल रहा है)।
यदि आपके कोई अन्य प्रश्न हैं, तो पर रुकने के लिए स्वतंत्र महसूस करें और प्रश्न पूछें। इसके अलावा, मैं एक जोड़े को लोगों से कहा कि इसे देखो और यह सुनिश्चित करें मैं पूरी तरह गलत नहीं कर रहा हूँ बनाने के लिए;)
var count = 0;
var numIterations = 100;
while(numIterations--) {
process.nextTick(function() {
count = count + 1;
});
}
setTimeout(function() {
console.log(count);
}, 2);
//
//=> 100
//
AAA_awright को # Node.js :)
process.nextTick (कॉलबैक) के लिए Node.js दस्तावेज़ के अपने पढ़ने कि यह अगले टिक के लिए कतार में कॉलबैक() जोड़ता है:
तो मैं अपने खुद के समाधान फ़ाइल ताले का उपयोग किया। यह टिकने से पहले टिक टिक या टिक इवेंट लूप चलाने के बारे में कुछ भी नहीं कहता है ... इसलिए मैंने इस कोड को 100 कॉलबैक जोड़ने के रूप में पढ़ा है जो अगले टिक के लिए TODO सूची में ++ गिनती है ... ?? – Paul
@ पॉल सही!/fyi # node.js आईआरसी आपका स्वागत करता है: http://bit.ly/nodeIRC – DTrejo