Jaka jest koncepcja implementacji puli wątków (w C z pomocą pthreads)? Jak wątek można przypisać do wykonania z puli wątków?Co to jest pulpit wątków?
Odpowiedz
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.
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ą.
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.
- 1. msdn: Co to jest "Bezpieczeństwo wątków"?
- 2. Co to jest "grupa wątków" w JMeter?
- 3. Co to jest semantyka wątków Pythona + wątków Unix?
- 4. Co to jest __kernel_vsyscall?
- 5. Co to jest NSHeartBeatThread?
- 6. Co to jest obciążenie pamięci dla pojedynczych wątków systemu Windows?
- 7. Co to jest wątek ByteArrayOutputStream bezpieczny dla wątków?
- 8. Co to jest głód?
- 9. Co to jest __meteor_bootstrap__?
- 10. Co to jest baza kanapy
- 11. Co to jest aplikacja wielowątkowa?
- 12. Co to jest plik błonnika?
- 13. Co to jest przerywanie gwintowania?
- 14. Co to jest Serializable? Co to znaczy?
- 15. Co to jest "usuń to"?
- 16. Co to jest Pagel?
- 17. Co to jest _GLOBAL_OFFSET_TABLE?
- 18. Co to jest "android.R.layout.simple_list_item_1"?
- 19. Co to jest DetailsView.EnableModelValidation?
- 20. Co to jest NSPathStore2?
- 21. Co to jest czasownik = "*"?
- 22. Co to jest Postgresql_psycopg2?
- 23. Co to jest ?
- 24. co to jest .netrwhist?
- 25. co to jest Microsoft.Practices.EnterpriseLibrary.Data
- 26. Co to jest CGVector?
- 27. Co to jest $ {project.licensePath}?
- 28. co to jest alloc.h?
- 29. Co to jest PurpleEventCallback?
- 30. Co to jest global ::?
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
, który powiedział, że N jest liczbą całkowitą i kto powiedział, że było> = 1? – Blah0x7B9
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