A vlákno je cesta, která je sledována během provádění programu. Většina programů napsaných dnes běží jako jedno vlákno. Řekněme, že například program není schopen číst stisknuté klávesy při vytváření výkresů. Tyto úlohy nemůže program provádět současně. Tento problém lze vyřešit pomocí multitaskingu tak, aby bylo možné provádět dvě nebo více úloh současně. Multitasking je dvou typů: založený na procesoru a založený na vláknech. Multitasking založený na procesoru je zcela řízen operačním systémem, avšak multitasking prostřednictvím multithreadingu může být do určité míry řízen programátorem. Koncept vícevláknové potřebuje správné pochopení těchto dvou pojmů – proces a vlákno . Proces je prováděný program. Proces lze dále rozdělit na nezávislé jednotky známé jako vlákna. Vlákno je jako malý lehký proces v rámci procesu. Nebo můžeme říci, že sbírka vláken je to, čemu se říká proces.
Aplikace – Závitování se široce používá téměř ve všech oblastech. Nejrozšířenější je dnes na internetu, kde využíváme transakční zpracování všech typů, jako je dobíjení, online převod, bankovnictví atd. Threading je segment, který rozděluje kód na malé části, které jsou velmi lehké a méně zatěžují CPU paměť tak, aby se dala snadno zpracovat a mohla dosáhnout cíle v požadované oblasti. Koncepce řezání závitů je navržena z důvodu problému rychlých a pravidelných změn v technologii a menší práce v různých oblastech díky menší aplikaci. Pak, jak se říká, je potřeba generovat tvorbu nebo inovace, a proto následováním tohoto přístupu lidská mysl rozvine koncept vlákna pro zvýšení schopnosti programování.
Životní cyklus vlákna
V životním cyklu vlákna existují různé fáze. Následují fáze, kterými vlákno prochází za celý svůj život.
- Nový: Životní cyklus narozeného vlákna (nové vlákno) začíná v tomto stavu. V tomto stavu zůstane, dokud se nespustí program.
- Spustitelný : Vlákno je po spuštění spustitelné. Má se za to, že plní úkol, který mu byl přidělen.
- Čekání : Zatímco čeká na jiné vlákno, aby provedlo úlohu, aktuálně běžící vlákno přejde do stavu čekání a poté, co obdrží signál z druhého vlákna, se vrátí zpět.
- Časované čekání: Spustitelné vlákno vstoupí do tohoto stavu na určitý časový interval a poté se vrátí zpět, když časový interval vyprší nebo dojde k události, na kterou vlákno čekalo.
- Ukončeno (mrtvé) : Vlákno přejde do tohoto stavu po dokončení své úlohy.
Typy spouštění v OS
Existují dva typy provedení:
- Souběžné provedení: K tomu dochází, když je procesor úspěšný při přepínání prostředků mezi vlákny ve vícevláknovém procesu na jediném procesoru.
- Paralelní provedení: K tomu dochází, když každé vlákno v procesu běží na samostatném procesoru ve stejnou dobu a ve stejném vícevláknovém procesu
Nevýhody multithreadingu
Multithreading je složitý a mnohokrát obtížně ovladatelný. Má to několik nevýhod. Tyto jsou:
- Pokud správně nevyužíváte zamykací mechanismy, při vyšetřování problémů s přístupem k datům existuje šance, že nastanou problémy, jako je nekonzistence dat a uváznutí.
- Pokud se mnoho vláken pokusí o přístup ke stejným datům, existuje šance, že může nastat situace hladovění vláken. Problémy sporu o zdroje jsou dalším problémem, který může uživatele trápit.
- Problémy se zobrazením mohou nastat, pokud vlákna postrádají koordinaci při zobrazování dat.
Výhody multithreadingu:
- Vícevláknové zpracování může zlepšit výkon a efektivitu programu tím, že efektivněji využívá dostupné zdroje CPU. Při současném provádění více vláken může využít výhody paralelismu a zkrátit celkovou dobu provádění.
- Vícevláknové zpracování může zlepšit odezvu v aplikacích, které zahrnují interakci uživatele. Oddělením časově náročných úloh z hlavního vlákna může uživatelské rozhraní zůstat responzivní a nezamrzne nebo přestane reagovat.
- Vícevláknové zpracování může umožnit lepší využití zdrojů. Například v serverové aplikaci může více vláken současně zpracovávat příchozí požadavky klientů, což umožňuje serveru obsluhovat více klientů současně.
- Multithreading může usnadnit lepší organizaci kódu a modularitu rozdělením složitých úloh do menších, spravovatelných jednotek provádění. Každé vlákno může zpracovat určitou část úkolu, což usnadňuje pochopení a údržbu kódu.