2009-07-27 17 views

Odpowiedz

9

Pula wątków to zbiór ustalonej liczby wątków tworzonych podczas uruchamiania aplikacji. Następnie wątki oczekują na zapytania, które przychodzą do nich, zwykle za pośrednictwem kolejki kontrolowanej przez semafor. Po otrzymaniu żądania i gdy jest co najmniej jeden wątek oczekujący, wątek jest budzony, obsługuje żądanie i wraca do oczekiwania na semaforze. Jeśli nie są dostępne żadne wątki, żądania są umieszczane w kolejce do momentu, w którym jeden z nich jest dostępny.

Pule wątków są ogólnie wydajniejszym sposobem zarządzania zasobami niż po prostu uruchamianiem nowego wątku dla każdego żądania. Jednak niektóre architektury umożliwiają tworzenie nowych wątków i dodawanie ich do puli podczas działania aplikacji, w zależności od ładowania żądania.

2

Dodawanie do odpowiedzi anona Chciałbym nadmienić, że istnieją Stałe pule wątków, które mają w nich ustaloną liczbę wątków; Buforowane pule wątków, które mogą dynamicznie rosnąć, a następnie zmniejszać się, gdy nie ma pracy; Dynamiczne pule wątków mogą być również wiązane przez maksymalną liczbę wątków i/lub maksymalną długość kolejki pracy. Nie sądzę, żeby istniała określona terminologia dla tego rodzaju rzeczy i rzadko spotyka się niepotwierdzone TP napisane w C, ale przynajmniej należy wiedzieć, że stała TP nie jest jedyną dostępną tam metodą.

3

coś wyjaśnić w poprzednich odpowiedzi:

tego powodu, że coraz więcej instancji wątki prowadzi do nieefektywności jest kontekst czasu przełączania. System operacyjny okresowo przełącza jeden wątek na inny w procesorze. Obejmuje to zapisanie stanu jednego wątku i załadowanie stanu innego wątku z pamięci, więc zajmuje on niezauważalny czas, N ms, na przełącznik kontekstowy.

Na przykład, jeśli masz 10 wątków, przełączanie kontekstów takex 10 * N ms. Jeśli masz 1000 wątków, to 1000 * N ms. Wraz ze wzrostem liczby współbieżnych wątków, przełączanie kontekstów zaczyna przytłaczać wszelkie wydajności wynikające z wielowątkowości. Twoja aplikacja ma najlepsze miejsce pod względem liczby wątków. Po określeniu tej liczby słodkiej przez eksperymentowanie, można ustawić maksymalną wielkość puli wątków do tej liczby wątków, uzyskując w ten sposób maksymalną wydajność wielowątkowości.

+0

Jest mało prawdopodobne, że przejście do kontekstu zajmie nawet 1 ms, generalnie są one bardziej podobne do nas. Wszystko inne jest jednak bardzo miłe. – CrazyCasta

+0

, który powiedział, że N jest liczbą całkowitą i kto powiedział, że było> = 1? – Blah0x7B9

+0

Korzystanie z jednostek ms sugeruje, że czas będzie w kolejności ms. Wierzę, że większość ludzi czytających twoją odpowiedź nie pomyślałaby, że czas zmiany kontekstu był około 1 nas. – CrazyCasta