A feldolgozóegységekből indított szálak miképp futnak?
Pl egyszerre valóban képesek futni vagy nem az-az ultra rövid vagy hosszabb időközönként váltakoztassák egymást?
(ha több magom van mint egy)
És egy másik kérdésem is volna egy program futhat úgy hogy egy másik magból is használ egy szálat.
Így használna két szálat ebből egyik a Main thread a másik pedig egy olyan thread amely nem egyezik azzal a feldolgozóegységgel amelyből a Main thread indult.





1-1 szál, 1-1 thread, vagy taszk.
A processzor optimális kihasználásakor egyetlen program fut. Több program vagy több thread esetén a thread-ekre jutó teljesítmény nem egyszerűen megoszlik a threadek között, hanem tejlesítmény vesztés következik be, hiszen a processzornak el kell mentenie az aktuális thread álapotát és visszatölteni a soron következő thread-ét és hát, ez is processzoridőt igényel.
Természetesen a mai processzorok esetében ez nem annyira életbe vágó mint korábban volt, de sok thread esetén már érzékelhető mérvű lehet a veszteség.
És miképp futnak a threadok egyszerre vagy rövid időközönként váltakoztassák egymást ezzel létrehozva egy olyan illúziót mintha egyszerre futárnak. Most melyik?
2.
Egy olyan magból amin nem a program Main threadje van hogyan indíthatok szálat?





Váltakozva futnak, így keltik annak illúzióját, mintha mindegyik futna. Legalábbis ez manapság a jellemző, de van más verzió is. Az ütemező intézi a thread-ek váltogatását. Tőle függ, hogy mi mikor fut.
Vannak nagyon komplex ütemezők, ezek lehetnek olyanok, hogy bizonyos threadeket gyakrabban, másokat ritkábban futtatnak. Ez akkor kell, ha van egy thread amely fontosabb a többinél (magasabb prioritású). Ilyen pl. egy feldolgozó-program és ami nem olyan fontos (tehát ráér) az pl. egy nyomtatás thread. Ilyenkor a feldolgozó progi egy sec alatt mondjuk 49-szer, míg a másik csak 1-szer fut.
Persze ilyenkor nincs taszkváltás, csak a magasabb prioritású taszk (thread) több ideig van békén hagyva, tehát nem kerül le róla a vezérlés.
De lehet olyan is, amit te említesz, hogy az egyik thread a másik után fut le. Ütemezőtől függ.
FIFO (sorrendi), LIFO (fordított sorrendi), Round Robin (körbenjárás azonos időszeletekkel), stb.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!