Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 26065|Odpowiedź: 2

[Źródło] Krótka analiza użycia puli wątków .net/C# ThreadPool

[Skopiuj link]
Opublikowano 21.06.2017 09:43:20 | | | |
Czym jest pula wątków? Dlaczego używać poolów wątków? Jak korzystać z poolów wątków?

1. Czym jest pula wątków?

        Klasa ThreadPool w .NET Framework zapewnia pulę wątków, która może być używana do wykonywania zadań, wysyłania zadań, obsługi asynchronicznych operacji I/O, oczekiwania w imieniu innych wątków oraz obsługi timerów. Czym więc jest pula wątków? Pula wątków to w rzeczywistości "pula", która przechowuje obiekty wątków i zapewnia podstawowe metody, takie jak ustawianie minimalnej/maksymalnej liczby wątków w puli, kolejkowanie metod do wykonania itd. ThreadPool to klasa statyczna, więc można jej używać bezpośrednio bez tworzenia obiektów.

2. Dlaczego używać pul wątków? Jakie są korzyści?

        Oficjalna strona Microsoftu mówi następująco: Wiele aplikacji tworzy dużą liczbę wątków, które są uśpione, czekając na wydarzenia. Jest też wiele wątków, które mogą przejść w stan hibernacji tylko po to, by okresowo budzić się i sprawdzać informacje o stanie zmiany lub aktualizacji. Pule wątków, pozwalające efektywniej korzystać z wątków w puli wątków roboczych zarządzanych przez system.

        Mówiąc prosto, każdy nowy wątek musi zajmować miejsce w pamięci i inne zasoby, a przy tak wielu nowych wątkach wiele z nich jest uśpionych lub czeka na zwolnienie zasobów. Wiele wątków wykonuje tylko drobne prace okresowo, takie jak odświeżanie danych itp., które są zbyt marnotrawne do rysowania, a rzadko zdarza się, by duża liczba wątków wybuchła w rzeczywistym programowaniu i zakończyła się w krótkim czasie. Dlatego zaproponowano koncepcję pool wątków. Jeśli aplikacja wyśle kolejne żądanie do puli wątków, wątek w stanie oczekującym zostaje aktywowany i wykonuje zadanie bez tworzenia nowego wątku, co oszczędza dużo narzutu. System automatycznie niszczy wątki tylko wtedy, gdy liczba wątków osiągnie maksymalną liczbę wątków. Dzięki temu korzystanie z pul wątków pozwala uniknąć dużych kosztów tworzenia i niszczenia, zapewnia lepszą wydajność i stabilność, a po drugie, programiści mogą skupić się na innych zadaniach, przekazując wątki zarządzaniu systemem.


3. Jak korzystać z pul wątków?

W rzeczywistości pule wątków są bardzo proste w użyciu, jak następuje

a. Ustaw maksymalną i minimalną pulę wątków:

ThreadPool.SetMaxThreads (int workerThreads,int completionPortThreads)
Ustaw liczbę żądań dla puli wątków, które mogą być aktywne jednocześnie. Wszystkie żądania większe niż ta liczba pozostaną w kolejce do czasu udostępnienia wątku puli wątków. Możesz też ustawić minimalną liczbę wątków.

b. Dodaj zadania do puli wątków:

ThreadPool.QueueUserWorkItem(nowy WaitCallback(nazwa metody));

lub
ThreadPool.QueueUserWorkItem(nowy WaitCallback(nazwa metody), parametr);

Na przykład, jeśli maksymalnie 5 wątków w puli wątków wykona metodę 60 razy, całkowite wynagrodzenie za 5 lat jest następujące:



Jeśli nie używasz puli wątków, możesz musieć otworzyć 60 wątków, aby wykonać metodę Run() asynchronicznie, co jest stratą miejsca. Teraz używamy do 5 wątków, które można wykonać w 1 sekundę, a wydajność i wydajność są bardzo dobre.





Poprzedni:Kod Baidu Map na pełny ekran (kod na pełny ekran divu)
Następny:Powiadomienie o nielegalnym adresie URL Alibaba Cloud blokującym dostęp do przetwarzania dostępu
 Ziemianin| Opublikowano 21.06.2017 09:47:12 |

Pule wątków mają następujące zalety:

1. W wielowątkowej puli wątków pula wątków może zmniejszyć liczbę wątków, które tworzymy, i rozsądnie wykorzystać wątki z puli wątków. Ponieważ wątki z wątkami w puli wątków są w stanie oczekiwania na przydzielenie.

2. Nie ma potrzeby zarządzania i utrzymywania wątków o krótkim czasie życia, nie ma potrzeby przydzielania im zasobów podczas ich tworzenia i uwalniania zasobów po ich ukończeniu.

3. Pula wątków będzie optymalizować wątki w puli zgodnie z aktualnymi charakterystykami systemu.

Wady pul wątków:

Po przekazaniu zadania do puli wątków do ukończenia nie możemy kontrolować priorytetu wątku, ustawić niektórych nazw wątków ani innych informacji. [Ale możemy dodać warstwę, która to doprecyzuje przed umieszczeniem tego w puli wątków]

Opublikowano 06.12.2017 11:28:49 |
Zaznacz to najpierw, żebyś mógł się nauczyć później
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com