2012-04-15 23 views
10

उपयोग करने के लिए मैं दूसरे लोगों के कोड में एएसएम ("ठहराव") को देखा और मुझे आश्चर्य है कि यह क्या करता है। कोड लिनक्स पर g ++ द्वारा संकलित किया गया है।एएसएम क्या करता है ("ठहराव") करते हैं और क्यों यह

यह लाइन एक लूप में है जो एक और धागे में है, जो अद्यतन होने पर लगातार मतदान करता है। मुझे लगता है यह कार्यक्रम फिर से मतदान से पहले थोड़ा रुक जाता है, लेकिन मुझे आश्चर्य है कि (1) मेरा अनुमान सही है (2) क्यों यह थामने के लिए आवश्यक है? जिस मशीन पर हम कोड चलाते हैं, उसके पास कई प्रोसेसर हैं और मैं धागा पूरी तरह से इसे मतदान जारी रखूंगा।

+0

क्या यह कर्नेल कोड है, या एप्लिकेशन कोड है? –

उत्तर

15

मूल रूप से है कि एक स्पिन पाश, या व्यस्त इंतजार कहा जाता है। यह जितना सीपीयू संसाधन कर सकता है उतना उपभोग करेगा। यह सीपीयू प्रोसेसिंग पावर को बर्बाद करता है और बिजली की खपत बढ़ाता है।

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

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