Mam ogólne pytanie dotyczące System.Threading.Threadpool po uruchomieniu w aplikacji sieci web na IIS. Załóżmy, że mamy 2 żądania wykonania na raz, i uruchamiamy kilka wątków za pomocą metody ThreadPool.QueueUserWorkItem. Czy te dwie prośby współużytkują ThreadPool, czy też połączenia do ThreadPool z dwóch żądań działają w dwóch osobnych pulach?Threadpool w kontekście IIS
Jest w IIS6 i 7.
dzięki za wgląd.
Oznacza to w zasadzie, że używanie ThreadPool do aplikacji internetowych, które muszą uruchamiać zadania na kilka wątków, jest złym pomysłem. –
Ponieważ wszystkie żądania internetowe są już obsługiwane asynchronicznie, powiedziałbym, że w większości przypadków nie zyskujesz żadnych znaczących korzyści z uruchamiania operacji w wątkach w tle w aplikacjach internetowych. Wyjątkiem byłby prawdopodobnie, jeśli nie chcesz blokować przetwarzania żądania oczekiwania na długo działającą operację. W takim przypadku możesz odpalić wątek w tle, wykonać jeszcze więcej pracy nad żądaniem, a następnie w końcu czekać na zakończenie, zanim wyślesz odpowiedź do klienta. –
W moim przypadku mam usługę, która działa w kontekście IIS, i że liczba X wychodzących żądań do różnych wyszukiwarek. Powinny się one odbywać w kilku wątkach, ponieważ chcę tutaj zwiększyć prędkość. Kiedy wszystkie wątki są kompletne, zbieram wyniki w jedną listę wyników i zwracam ją do osoby dzwoniącej. Powodem użycia puli w tym przypadku jest użycie mniejszej ilości pamięci, ponieważ ponownie wykorzystuje wątki w puli. Ale jeśli użyję tej samej puli, co używa IIS, może to nie być dobra klasa. –