WinAPI स्लीप() फ़ंक्शन की अवधि में विसंगति को समझना
1 मिलीसेकंड के पैरामीटर के साथ WinAPI स्लीप() फ़ंक्शन को लागू करते समय, यह यह देखा गया है कि थ्रेड वास्तव में बहुत लंबी अवधि के लिए रुकता है, आमतौर पर लगभग 15 मिलीसेकंड। यह घटना संभावित सिस्टम समस्याओं के बारे में चिंताएं बढ़ाती है।
Windows में समय परिमाणीकरण
Windows अपने थ्रेड शेड्यूलिंग के लिए एक समय परिमाणीकरण तंत्र का उपयोग करता है। इसका मतलब यह है कि सिस्टम अलग-अलग अंतरालों में थ्रेड्स को शेड्यूल करता है, जिसे क्वांटम के रूप में जाना जाता है। इन अंतरालों की सटीक अवधि विंडोज संस्करण और संस्करण सहित कई कारकों के आधार पर भिन्न होती है। औसतन, विंडोज़ 7 लगभग 15.6 मिलीसेकंड की समय मात्रा के साथ काम करता है।
नींद() अवधि पर प्रभाव
समय परिमाणीकरण के परिणामस्वरूप, कोई भी गैर-शून्य स्लीप() को प्रदान किया गया विलंब तर्क निकटतम क्वांटम तक पूर्णांकित किया गया है। यह बताता है कि स्लीप(1) कॉल वास्तव में थ्रेड को 15 मिलीसेकंड के लिए क्यों रोकती है, जो कि 1 मिलीसेकंड के लिए निकटतम समय मात्रा है।
सत्यापन
इस व्यवहार को सत्यापित करने के लिए , आप दिए गए कोड स्निपेट को निष्पादित कर सकते हैं। कोड चलाने से सिस्टम की टाइमर रिज़ॉल्यूशन सेटिंग्स के आधार पर अलग-अलग परिणाम मिल सकते हैं। यदि सिस्टम-वाइड टाइमर रिज़ॉल्यूशन को मैन्युअल रूप से 1 मिलीसेकंड पर सेट किया गया है, तो आप कम नींद की अवधि देख सकते हैं। हालाँकि, डिफ़ॉल्ट रूप से, विंडोज 7 15.6 मिलीसेकंड के टाइमर रिज़ॉल्यूशन का उपयोग करता है, जिससे नींद का समय बढ़ जाता है।
निष्कर्ष
स्लीप() फ़ंक्शन में विसंगति अवधि को विंडोज़ के थ्रेड शेड्यूलर में अंतर्निहित समय परिमाणीकरण तंत्र के लिए जिम्मेदार ठहराया गया है। यह राउंडिंग सुनिश्चित करती है कि थ्रेड शेड्यूलिंग कुशलतापूर्वक और पूर्वानुमानित रूप से की जाती है, जिससे संभावित थ्रेड शेड्यूलिंग टकराव को रोका जा सकता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3