WS 2008 R2'de IIS'de (tümleşik modda) çalışan WCF Services aracılığıyla başlatılan uzun süren iş süreçlerine sahibiz. Bu iş süreçleri, genellikle SQL Server arka planımızla çok sayıda etkileşim içerir. İsteklerin bir ilk servis çağrısı ile sıraya konması ve daha sonra öncelik temelinde yürütülmesi için özel bir görev sırası uygulaması oluşturduk. Bu yürütmenin tamamlanması uzun sürebilir (20-30 dakika aşırı). İstemciler daha sonra kendi arka plan görevlerinin ilerlemesi için sunucuyu sorgulayabilir.ThreadPools vs Uzun süren işlemler için Own Threads
Geçerli uygulamada, görevler ThreadPool'dan değil yürütmek için ayrı bir iş parçacığı üzerinde etkinleşir. Bu, ASP.NET isteklerinin sunulmasının açılmasını engellemek için ThreadPool kullanılarak uzun süredir çalışan görevlerin çalıştırılmaması nedeniyle reading recommendations nedeniyle yapıldı. Eşzamanlı olarak çalıştırılabilen arka plan görevlerinin sayısına bir üst sınır yerleştirerek ortaya çıkan iş parçacığı sayısını kontrol ediyoruz. Bu şekilde, CPU üzerindeki yükü kontrol etmeye ve çok fazla konu bağlamında anahtarlamayı önlemeye çalışırız. Bütün bunlar olsa da, elbette, başvuru için normal "online" taleplere de hizmet etmemiz gerekiyor.
Thomas Marquardt tarafından this post okunduktan sonra ThreadPool'u kullanmadığımız gerçeğinden endişe duyuyorum. Thomas'ın kapatma sorununu, ApplicationEnd olayına girerek ve uzun süren görevleri iptal ederek belirttik. Yani sorum şu, ThreadPool'u kullanmaya geçelim mi? Bu ipler uzun süreler boyunca bağlı olmaktan ne haber? Thomas'ı doğru bir şekilde anlarsam, ThreadPool'un normal çevrimiçi operasyonlara hizmet etmek için daha fazla istek oluşturmak için kendisini ayarlayacağından bunun önemli olmadığını söylüyor. Aynı zemini de kapsayan this StackOverflow question'u da okudum ama hala ilerlemenin yolunda emin değilim.
Lütfen dikkat edin: eksik olanı düşündüğünüz belirli bir ayarlama hangisidir? –
Belki de "ayarlama" kullanmak için doğru kelime değildi, ama ben arka plan görevleri ThreadPool konuları kullanılarak yürütüyor olsaydı, ThreadPool "koymak" ek "yük" sisteme koymak olduğu gerçeğine atıfta bulundu arka plan görevleri ile. Eğer normal konuları kullanarak çalıştırırsak ThreadPool bu bilgiye sahip değildir. Yine, ThreadPool sezgiselinin tam olarak nasıl çalıştığına dair iç detaylara sahip değilim, ancak Thomas'ın gönderdiği yazıyı okuduğumda, bu konudaki endişeyi dile getirdim. -ThreadPool konuları – Carel