Obsługa wątków przez procesor

Obsługa wątków przez procesor
RA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5
0

Dzień dobry,
zastanawia mnie w jaki sposób procesor obsługuje program, który np. ma 10 wątków, a procesor np. ma 8 wątków. Czy w sytuacji takiej cały proces wielowątkowości nie traci sensu?

jarekr000000
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: U krasnoludów - pod górą
  • Postów: 4712
1

Cały system wątków rozwinął się i dobrze działał na komputerach z jednym rdzeniem.

Charles_Ray
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1912
1

Współbieżność vs równoległość. Pomyśl, że możesz na systemie operacyjnym mieć odpalanych jednocześnie wiele programów (procesów) dysponując tylko jednym rdzeniem.

Wracając do pytania - program spawnuje 10 wątków, a rdzeni jest 8. Nie wiadomo, na którym rdzeniu będzie wykonany który wątek i nie jest tak, że 2 będą czekać, aż pierwsze 8 się skończy wykonywać (wywłaszczanie).

Warto jeszcze w temacie poczytać to: https://en.m.wikipedia.org/wiki/Amdahl%27s_law

Wibowit
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: XML Hills
4

Dzięki time slicing na jednym rdzeniu może działać wiele wątków programowych: https://en.wikipedia.org/wiki/Preemption_(computing)#Time_slice
Przez to, że system operacyjny bardzo szybko przełącza między nimi ma się wrażenie, że wszystkie posuwają się do przodu jednocześnie.

Henryk VIII Tudor
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10
0

Sens traci dopiero jak masz tych wątków bardzo dużo, bo context switching(kiedy procesor przydziela czas procesora innemu wątku) kosztuje

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
2

Jeśli każdy twój wątek robi coś mocno CPU-intensive (np. liczy hashe), to nie ma to sensu. Ale jeśli twoje wątki mają dużo przestojów, bo np. czekaja na jakieś I/O albo co gorsza w ogóle to są wątki które np. komunikują się ze zdalnymi maszynami, to wtedy zaczyna to mieć sens, bo taki czekający wątek nie potrzebuje CPU.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.