Yerel IIS işleminde oluşturulan iş parçacıklarının varsayılan yığın boyutu üst sınırı 256 KB'tır

Bu makalede, yerel bir Microsoft Internet Information Services (IIS) işlemi tarafından oluşturulan bir iş parçacığının varsayılan en büyük yığın boyutu tanıtılır.

Özgün ürün sürümü: Internet Information Services 8.0
Özgün KB numarası: 932909

Özet

Varsayılan olarak, yerel IIS işlemi tarafından oluşturulan bir iş parçacığının yığın boyutu üst sınırı, Windows Server 2008'in öncesinde 256 KB'tır. Örneğin, Inetinfo.exe, DLLHost.exe veya W3wp.exe IIS 5.0 veya IIS 6.0'da bir iş parçacığı oluşturduğunda, iş parçacığının yığın boyutu üst sınırı varsayılan olarak 256 KB'tır. Ayrıca, iş parçacığının yığın boyutunu belirtmek için CreateThread işlevini açıkça çağırabilirsiniz. Microsoft Windows 2000'de, Microsoft ASP.NET Çalışan İşlemi (ASPNet_wp.exe) bir iş parçacığı oluşturursa, iş parçacığının yığın boyutu üst sınırı 1 MB'tır. Windows Server 2008 ve üzeri sürümlerde, IIS'nin 32 bit sürümünde çalışan bir iş parçacığının yığın boyutu üst sınırı 256 KB, x64 sunucusunda ise 512 KB'tır.

Not

Internet Information Services, her çalışan işleminin içinde çalışan uygulama kodunun gerektiğinde yüzlerce veya daha fazla iş parçacığını aynı anda kullanmasına olanak tanıyan çok iş parçacıklı bir web uygulaması platformudur. Her iş parçacığı, işlemin sanal bellek kullanımını yönetilebilir sınırlar içinde tutmak için aynı yığın boyutu sınırına bağlıdır.

Daha fazla bilgi

bir iş parçacığının en büyük yığın boyutu, işlemin içinde çalışan tek bir ISAPI, DLL veya ASP bileşeni tarafından belirlenmemiştir. bir iş parçacığının en büyük yığın boyutu, işlemin yürütülebilir dosyası tarafından yapılandırılır. Büyük bir yığın boyutuna sahip olmanız gerekiyorsa program aracılığıyla bir iş parçacığı oluşturabilir ve ardından uygun yığın boyutunu ayarlayabilirsiniz. Alternatif olarak, iş parçacığı en büyük yığın boyutuna sahip değilse, yığını doğru kullanmak için uygulamadaki kodu değiştirmeniz gerekir.

Bir işlevin bağımsız değişkenleri ve yerel değişkenleri iş parçacığı yığınında depolanır. Büyük bir değere sahip bir yerel değişken bildirirseniz yığın hızla tükenir. Örneğin, aşağıdaki kod örneğindeki işlev, diziyi depolamak için yığında 400.000 bayt gerektirir.

void func(void)
{
    int i[100000];
    // Use 100,000 integers multiplied by 4 bytes per integer to store the array.
    return;
}

Not

Bu işlevi IIS 4.0'da, IIS 5.0'da, IIS 5.1'de veya IIS 6.0'da çağıramazsınız.

Yığını kullanmaktan kaçınmak için, belleği dinamik olarak ayırın. Örneğin, aşağıdaki kod örneğindeki işlev belleği dinamik olarak ayırır.

void func(void)
{
    int *i
    
    i = new int[100000];
    // More code goes here.
    return;
}

Not

Bu kod örneğinde bellek yığın yerine yığında depolanır. Bu nedenle, işlevi diziyi depolamak için yığında 400.000 bayt gerektirmez.

Bir işlev özyinelemeli olarak çağrılırsa yığın hızla tükenmiş olabilir. Örneğin, aşağıdaki koşullar doğruysa bir işlev yığında 400.000 bayt gerektirir:

  • İşlev, yerel değişken için 40 bayt gerektirir.
  • İşlev özyinelemeli olarak 10.000 kez çağrılır.

Ortak Ağ Geçidi Arabirimi (CGI) uygulamasında, bir iş parçacığının yığın boyutu üst sınırı 256 KB değildir. CGI uygulamasını başlattığınızda yeni bir işlem oluşturulur ve CGI yürütülebilir dosyaları yığın boyutunu yapılandırılır. Ayrıca, iş parçacığının yığın boyutunu belirtmek için CreateThread işlevini açıkça çağırabilirsiniz.

Daha fazla bilgi için bkz . İş Parçacığı Yığını Boyutu.