जब आप एक धागा सोते हैं , तो वास्तव में क्या चल रहा है?
मैं देखता हूं कि एक थ्रेड को "एक निश्चित समय के लिए वर्तमान थ्रेड को रोक देता है" । लेकिन यह कैसे काम करता है?
हाउ थ्रेड। स्लीप () के अनुसार आंतरिक रूप से काम करता है और थ्रेड। स्लीप वास्तव में कैसे काम करता है? :
- नींद की अवधि कुछ सिस्टम-विशिष्ट ग्रैन्युलैरिटी के अधीन होगी
- नींद अवरुद्ध है
- थ्रेड CPU को छोड़ देता है और उसका निष्पादन रोक देता है
- सोते समय थ्रेड CPU समय का उपभोग नहीं कर रहा है
मैं सिर्फ आंतरिक और मौलिक यांत्रिकी को समझ नहीं सकता कि यह सब क्या है।
मैं समझता हूं कि कुछ ऐसा शेड्यूलर है जिसे थ्रेड्स के बीच स्विच करने के लिए जिम्मेदार है।
सूत्रों से प्रतीत होता है कि यह OS (या हार्डवेयर?) के अनुसार भिन्न होता है और अधिकांश थ्रेड्स 1ms - 60ms या तो सीपीयू स्विच करने से पहले कुछ क्रियाओं को करने के लिए दिए जाते हैं।
लेकिन जब एक धागा सोता है (उदाहरण के लिए, कई सेकंड), यह फिर से कैसे शुरू होता है? मुझे लग रहा है कि टाइमर किसी तरह शामिल है, क्या यह मदरबोर्ड की घड़ी है? क्या यह सीपीयू क्लॉक रेट से संबंधित है?
और यहां तक कि अगर एक टाइमर शामिल है, तो सीपीयू को कैसे पता चलता है जब थ्रेड पर फिर से ध्यान देने का समय है? यदि यह तैयार है तो यह देखने के लिए धागे पर लगातार जांच नहीं करनी होगी? क्या यह प्रभावी रूप से मतदान नहीं है और इसलिए सीपीयू समय का उपभोग कर रहा है?
क्या एक थ्रेड भाषा-विशिष्ट सो रही है या ओएस इसके लिए जिम्मेदार है या यह सीपीयू-विशिष्ट चीज है?
क्या कोई कृपया मुझे इस बात की व्याख्या करेगा कि शेड्यूलर जैसी चीजों की बुनियादी व्याख्या और सीपीयू इस सब के दौरान क्या कर रहा है?