2010-05-17 5 views
9

मुझे पता है कि अनपेक्षित प्रकार के लिए एक अनंत लूप आमतौर पर उच्च CPU उपयोग का कारण बनता है। लेकिन, मुझे समझ में नहीं आता क्यों। क्या कोई मुझे यह समझा सकता है?अनपेक्षित प्रकार का अनंत लूप CPU उपयोग को क्यों बढ़ाता है?

उत्तर

6

अनंत लूप किसी अन्य कोड से चलने से अलग नहीं हैं। कंप्यूटर नहीं जानता है कि अनंत लूप एक जटिल गणना नहीं है जिसके लिए बहुत सारे पुनरावृत्तियों की आवश्यकता होती है।

जब तक अनंत लूप में कोड नहीं होता है जो कुछ सिस्टम फ़ंक्शंस को कॉल करता है जो ओएस पर वापस आते हैं, तो ओएस इसे एक ऐसी प्रक्रिया के रूप में मानता है जो सक्रिय रूप से किसी चीज़ पर काम कर रहा है और इसे निष्पादित करने का समय देता है। यदि कोई अन्य प्रक्रिया नहीं चल रही है, तो यह 100% सीपीयू (एक कोर सिस्टम पर) खाएगी।

+1

की बात कर रहे आधुनिक सामान्य प्रयोजन हे/एस, किसी भी समझदार कोड एक interruptable प्रतीक्षा राज्य है जो कि धागे पर कुछ भी क्रियान्वित जब तक यह करने की जरूरत से गिरी बंद हो जाता है में जाना जाएगा। –

+0

सहमत हुए, लेकिन मेरी तुलना एक गहन गणना के साथ थी, जैसे अकादमिक शोध के लिए किए गए। – NilObject

18

सीपीयू उस लूप को निष्पादित करते समय कुछ भी नहीं कर सकता (जो कभी खत्म नहीं होता है)। यहां तक ​​कि यदि आप प्री-एम्प्टीव मल्टी-टास्किंग सिस्टम का उपयोग कर रहे हैं (ताकि अनंत लूप केवल अपनी प्रक्रिया या थ्रेड को हमेशा के लिए छीन लेगा), लूप प्रत्येक बार ओएस के प्री-एम्प्टीव शेड्यूलर को हाथों में "टाइम" खाएगा अगली टुकड़ा के लिए सीपीयू - कुछ भी नहीं कर रहा है, लेकिन प्रत्येक टुकड़े के सीपीयू समय के एक टुकड़े के मूल्य को खा रहा है, ताकि अन्यथा उपयोगी काम कर रहे अन्य सभी थ्रेडों के लिए बहुत सी सीपीयू खो जाए।

+1

यह उत्तर, हालांकि सही हो सकता है, बहुत मुश्किल लग रहा है और इसलिए इस तरह के प्रश्न पूछने वाले लोगों के लिए बहुत उपयोगी नहीं है। तकनीकी शर्तों के व्यापक उपयोग के शीर्ष पर, दूसरा वाक्य, जो अनुच्छेद का सबसे अधिक है, विशेष रूप से पार्स करने के लिए बहुत लंबा तरीका है। – sawa

6

अपने आप में अनंत लूप बिल्कुल कोई समस्या नहीं है। उपयोगकर्ता के साथ बातचीत करने वाले अधिकांश एप्लिकेशन अनंत लूप होते हैं। वे बार-बार उपयोगकर्ता के लिए प्रतीक्षा करते हैं, उस पर कार्य करते हैं, और चक्र फिर से करते हैं। ऑपरेटिंग सिस्टम ही एक अनंत लूप है। इन प्रकार के अनंत लूप को 'उत्पादक' कहा जाता है क्योंकि अनिश्चित काल को दोहराने के बावजूद, वे समय-समय पर उपयोगकर्ता को कुछ उपयोगी बनाते हैं।

मुझे लगता है कि आपकी चिंता अनुत्पादक अनंत लूप के साथ है। लेकिन यह स्पष्ट है कि ये एक समस्या क्यों हैं। उनके पास उत्पादक लूप के सभी नुकसान हैं (बिजली का उपभोग करें, CPU समय का उपयोग करें और इसी तरह) किसी भी लाभ यानी के साथ। वे कुछ भी उपयोगी नहीं बनाते हैं।

+1

भले ही आपका पहला पैराग्राफ जानकारीपूर्ण और सहायक हो, फिर भी दूसरा अनुच्छेद परिपत्र है। सवाल यह है कि, अनपेक्षित प्रकार की अनंत लूप क्यों करें "बिजली का उपभोग करें, सीपीयू समय का उपयोग करें, और इसी तरह"? – sawa

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