2011-09-13 14 views
8

यह एक शब्द है जिसे मैं बार-बार देखता हूं जब रीयलटाइम प्रोसेसिंग भाषाओं का जिक्र करते हैं। इस विशेष मामले में, मैं node.js मुखपृष्ठ पढ़ रहा हूं और इसमें यह उद्धरण है:अवरोधन कार्य क्या है?

"अन्य प्रणालियों में ईवेंट-लूप शुरू करने के लिए हमेशा अवरुद्ध कॉल होता है।"

अवरुद्ध कॉल क्या है?

उत्तर

13

एक ऐसा फ़ंक्शन जो स्क्रिप्ट निष्पादन को समाप्त होने तक रोकता है।

उदाहरण के लिए

, अगर मैं अपने भाषा में एक समारोह है कि, एक फ़ाइल पर लिखने में तो की तरह इस्तेमाल किया गया था:

fwrite(file, "Contents"); 
print("Wrote to file!"); 

print बयान केवल एक बार फ़ाइल डिस्क पर लिखी गई है निष्पादित किया जाएगा । पूरे कार्यक्रम इस निर्देश पर रुक गया है। यह पर्याप्त लिखते हैं छोटे के लिए ध्यान देने योग्य नहीं है, लेकिन कल्पना मैं फ़ाइल पर लिखने में एक बड़ी ब्लॉब, एक है कि कई सेकंड था:

fwrite(file, blob); 
print("Wrote to file!"); 

print बयान केवल writting के कुछ सेकंड के बाद क्रियान्वित किया जाएगा, और उस कार्यक्रम के लिए पूरा कार्यक्रम बंद कर दिया जाएगा। Node.js में, यह सामग्री एसिंक्रोनस, ईवेंट और कॉलबैक का उपयोग करके किया जाता है। हमारा उदाहरण बन जाएगा:

fwrite(file, blob, function() { 
    print("Wrote to file!"); 
}); 
print("Do other stuff"); 

जहां फ़ाइल को लिखा जाने के बाद तीसरा पैरामीटर एक समारोह कहा जाता है। लेखन फ़ंक्शन के बाद स्थित print कथन तुरंत बाद में कॉल किया जाएगा, चाहे फ़ाइल अभी तक लिखी गई हो या नहीं। तो अगर हम एक बहुत बड़ा पर्याप्त ब्लॉब लिखने के लिए थे, उत्पादन इस प्रकार दिखाई देंगे:

Do other stuff 
Wrote to file! 

यह applictions बनाता है बहुत तेजी क्योंकि आप एक ग्राहक के संदेश, एक फाइल लिखने या अन्य पर इंतजार कर रहे हैं। आप डेटा को समानांतर तरीके से संसाधित कर सकते हैं। यह नोड.जे.एस. की शक्तियों में से एक द्वारा माना जाता है।

2
var block = function _block() { 
    while(true) { 
    readInputs(); 
    compute(); 
    drawToScreen(); 
    } 
} 

एक ब्लॉकिंग फ़ंक्शन मूल रूप से हमेशा के लिए गणना करता है। अवरुद्ध करके इसका मतलब है।

अन्य अवरुद्ध कार्यों आईओ होने के लिए

एक गैर अवरुद्ध आईओ प्रणाली का मतलब है एक समारोह एक आईओ कार्रवाई शुरू होता है इंतजार करेंगे, तो निष्क्रिय हो जाए तो आईओ कार्रवाई के परिणाम संभालती है जब ऐसा होता है।

यह मूल रूप से धागे को निष्क्रिय करने और सोने के बीच का अंतर है।

0

एक अवरोधक कॉल वह है जो प्रसंस्करण को तब तक जारी रखने की अनुमति नहीं देता जब तक यह कॉलिंग थ्रेड पर वापस न आए - इसे सिंक्रोनस कॉल के रूप में भी जाना जाता है। दूसरी ओर असिंक्रोनस का अर्थ है कि धागे (और कोड) एक ही समय में निष्पादित कर सकते हैं (समवर्ती रूप से)।

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