Mam problem z .Net's ThreadPool (.NET 4).Maksymalna liczba wątków ThreadPool
Przeczytałem, że domyślnie .NET ma limit 25 wątków na procesor, ale według wpisów na forum na SO i w innych miejscach, mogę zwiększyć limit za pomocą poniższego kodu.
void SetThreads(int threads)
{
ThreadPool.SetMaxThreads(threads, threads);
ThreadPool.SetMinThreads(threads, threads);
}
Jednakże kiedy ustawić wyżej pewnym dowolnie dużej liczby, na przykład, 2000 i kolejki ~ 1000 pozycji, nadal tylko ~ 33 wątków z systemem (.NET CLR wykonuje ~ 5 wątków) i ThreadPool.GetAvailableThreads()
zwraca 1971 wątków pozostałych.
Dlaczego powyższy kod nie działa?
W jaki sposób umieszczasz w kolejce zadania w puli wątków? Pokazanie twojego kodu testowego może naprawdę pomóc. –
Twój problem polega na tym, że powinieneś używać _less_ niż 33 wątków, nie więcej. –
@Henk Holterman, to nie jest duża aplikacja - jest to szybki generator worków HTTP, w którym próbuję załadować lokalny serwer sieciowy z mnóstwem żądań. Niestety nie wyszło tak dobrze. – foxy