डिफ़ॉल्ट रूप से, अधिकतम स्टैक आकार मूल IIS प्रक्रिया में बनाया गया है जो किसी थ्रेड के 256 KB है

लागू: Internet Information Services 8.0

सारांश


डिफ़ॉल्ट रूप से, अधिकतम स्टैक आकार किसी स्थानीय Microsoft इंटरनेट सूचना सेवाओं (IIS) प्रक्रिया के द्वारा बनाई गई है जो थ्रेड के 256 KB Windows Server 2008 से पहले है। Inetinfo.exe, DLLHost.exe या W3wp.exe थ्रेड IIS 5.0 या IIS 6.0 में बनाता है, तो उदाहरण के लिए, थ्रेड की अधिकतम स्टैक आकार 256 KB डिफ़ॉल्ट रूप से है। आप भी स्पष्ट रूप से थ्रेड स्टैक आकार निर्दिष्ट करने के लिए CreateThread फ़ंक्शन कॉल कर सकते हैं। Microsoft ASP.NET वर्कर प्रक्रिया (ASPNet_wp.exe) एक थ्रेड बनाता है, तो Microsoft Windows 2000 में, थ्रेड की अधिकतम स्टैक आकार 1 MB है। Windows Server 2008 में और इससे उच्च, IIS के 32-बिट संस्करण पर चल रहे थ्रेड का अधिकतम स्टैक आकार 256 KB है, और सर्वर एक x64 पर 512 KB है।

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

अधिक जानकारी


थ्रेड का अधिकतम स्टैक आकार में प्रक्रिया चल रही है एक अलग-अलग ISAPI, DLL, या ASP घटक द्वारा निर्धारित नहीं है। अधिकतम स्टैक आकार थ्रेड की प्रक्रिया का निष्पादन योग्य फ़ाइल के द्वारा कॉन्फ़िगर किया गया है। एक बड़ा स्टैक आकार होना चाहिए, तो आप प्रोग्राम के जरिए किसी थ्रेड बनाएँ कर सकते हैं और फिर उपयुक्त स्टैक आकार पर सेट करें। वैकल्पिक रूप से, थ्रेड अधिकतम स्टैक आकार से बाहर चलाता है, तो आप सही रूप से स्टैक का उपयोग करने के लिए अनुप्रयोग में कोड बदलना आवश्यक है।

थ्रेड स्टैक में संग्रहीत की जाती हैं और स्थानीय चर का एक फ़ंक्शन तर्क है। यदि आप एक बहुत बड़ा मान है कोई स्थानीय चर घोषित करें, स्टैक जल्दी समाप्त नहीं हो जाती है। उदाहरण के लिए, फ़ंक्शन में निम्न कोड उदाहरण में स्टैक संग्रह सरणी के लिए 400,000 बाइट्स की आवश्यकता है।
void func(void)   {
int i[100000];
// Use 100,000 integers multiplied by 4 bytes per integer to store the array.
return;
}

नोट में IIS 4.0, IIS 5.0 में, में IIS 5.1 या IIS 6.0 में आप इस फ़ंक्शन कॉल नहीं कर सकता।

स्टैक का उपयोग करने से बचने के लिए गतिशील रूप से स्मृति आवंटित है। उदाहरण के लिए, निम्न कोड उदाहरण में फ़ंक्शन गतिशील रूप से स्मृति आवंटित करता है।
void func(void)   {
int *i

i = new int[100000];
// More code goes here.
return;
}

नोट यह कोड उदाहरण में, स्मृति हीप स्टैक स्थान में संग्रहीत किया जाता है। इसलिए, फ़ंक्शन संग्रह सरणी के लिए स्टैक में 400,000 बाइट्स की आवश्यकता नहीं है।

पुनरावृत्तीय रूप से हटाने को फ़ंक्शन कहा जाता है, तो स्टैक जल्दी समाप्त नहीं हो हो सकता है। यदि निम्न स्थितियाँ सत्य हैं, तो उदाहरण के लिए, किसी फ़ंक्शन स्टैक में 400,000 बाइट्स की आवश्यकता है:
  • फ़ंक्शन किसी स्थानीय चर के लिए 40 बाइट्स की आवश्यकता है।
  • फ़ंक्शन कॉल 10000 बार पुनरावृत्तीय रूप से हटाने है।
किसी सामान्य गेटवे इंटरफ़ेस (CGI) अनुप्रयोग में थ्रेड 256 KB की अधिकतम स्टैक आकार नहीं है। CGI अनुप्रयोग प्रारंभ करते हैं, कोई नया प्रक्रिया बनाया गया है, और स्टैक आकार CGI निष्पादन योग्य फ़ाइलें कॉन्फ़िगर करें। आप भी स्पष्ट रूप से थ्रेड स्टैक आकार निर्दिष्ट करने के लिए CreateThread फ़ंक्शन कॉल कर सकते हैं।

अधिक जानकारी के लिए, निम्न MSDN वेब साइट पर जाएँ: