A niť je cesta, ktorá sa sleduje počas vykonávania programu. Väčšina programov napísaných v súčasnosti beží ako jedno vlákno. Povedzme napríklad, že program nie je schopný čítať stlačenie klávesov pri vytváraní výkresov. Tieto úlohy nemôže program vykonať súčasne. Tento problém je možné vyriešiť pomocou multitaskingu, takže dve alebo viac úloh môžu byť vykonávané súčasne. Multitasking je dvoch typov: založený na procesore a založený na vlákne. Multitasking založený na procesore je úplne riadený operačným systémom, avšak multitasking prostredníctvom multithreadingu môže do určitej miery ovládať programátor. Koncept viacvláknové potrebuje správne pochopenie týchto dvoch pojmov – proces a vlákno . Proces je vykonávaný program. Proces možno ďalej rozdeliť na nezávislé jednotky známe ako vlákna. Vlákno je ako malý ľahký proces v rámci procesu. Alebo môžeme povedať, že zbierka vlákien je to, čo je známe ako proces.
Aplikácie – Závitovanie sa široko používa takmer vo všetkých oblastiach. Najrozšírenejšie je to dnes vidieť na internete, kde využívame spracovanie transakcií každého typu, ako je dobíjanie, online prevod, bankovníctvo atď. Threading je segment, ktorý rozdeľuje kód na malé časti, ktoré sú veľmi ľahké a menej zaťažujúce CPU. pamäť tak, aby sa dala ľahko vypracovať a mohla dosiahnuť cieľ v želanej oblasti. Koncepcia závitovania je navrhnutá z dôvodu problému rýchlych a pravidelných zmien v technológii a menšej práce v rôznych oblastiach vďaka menšej aplikácii. Potom, ako sa hovorí, potreba je generovanie tvorby alebo inovácie, a preto dodržiavaním tohto prístupu ľudská myseľ rozvíja koncepciu vlákna na zvýšenie schopnosti programovania.
Životný cyklus vlákna
V životnom cykle vlákna existujú rôzne fázy. Nasledujú fázy, ktorými vlákno prechádza počas celého svojho života.
- Nový: V tomto stave začína životný cyklus narodeného vlákna (nové vlákno). V tomto stave zostane, kým sa nespustí program.
- Spustiteľné : Vlákno sa po spustení stane spustiteľným. Považuje sa to za splnenie úlohy, ktorá mu bola zverená.
- Čakanie : Počas čakania na vykonanie úlohy iným vláknom prejde aktuálne spustené vlákno do stavu čakania a po prijatí signálu z druhého vlákna sa vráti späť.
- Načasované čakanie: Spustiteľné vlákno vstúpi do tohto stavu na určitý časový interval a potom sa vráti späť, keď vyprší časový interval alebo nastane udalosť, na ktorú vlákno čakalo.
- Ukončené (mŕtve) : Vlákno prejde do tohto stavu po dokončení svojej úlohy.
Typy vykonávania v OS
Existujú dva typy vykonávania:
radenie zo zoznamu polí
- Súbežné vykonávanie: K tomu dochádza, keď je procesor úspešný pri prepínaní prostriedkov medzi vláknami vo viacvláknovom procese na jednom procesore.
- Paralelné prevedenie: K tomu dochádza, keď každé vlákno v procese beží na samostatnom procesore v rovnakom čase a v rovnakom viacvláknovom procese
Nevýhody multithreadingu
Multithreading je zložitý a mnohokrát ťažko zvládnuteľný. Má to niekoľko nevýhod. Toto sú:
- Ak správne nevyužívate uzamykacie mechanizmy, pri vyšetrovaní problémov s prístupom k údajom existuje šanca, že nastanú problémy, ako je nekonzistentnosť údajov a zablokovanie.
- Ak sa veľa vlákien pokúsi získať prístup k rovnakým údajom, existuje šanca, že môže nastať situácia hladovania vlákien. Problémy so spormi o zdroje sú ďalším problémom, ktorý môže používateľov obťažovať.
- Ak vláknam pri zobrazovaní údajov chýba koordinácia, môžu sa vyskytnúť problémy so zobrazením.
Výhody multithreadingu:
- Viacvláknové spracovanie môže zlepšiť výkon a efektivitu programu efektívnejším využívaním dostupných zdrojov CPU. Súčasné vykonávanie viacerých vlákien môže využiť paralelizmus a znížiť celkový čas vykonávania.
- Viacvláknové spracovanie môže zlepšiť odozvu v aplikáciách, ktoré zahŕňajú interakciu používateľa. Oddelením časovo náročných úloh od hlavného vlákna môže používateľské rozhranie zostať responzívne a nezamrzne ani neprestane reagovať.
- Multithreading môže umožniť lepšie využitie zdrojov. Napríklad v serverovej aplikácii môže viacero vlákien spracovávať prichádzajúce požiadavky klientov súčasne, čo umožňuje serveru obsluhovať viac klientov súčasne.
- Multithreading môže uľahčiť lepšiu organizáciu kódu a modularitu rozdelením zložitých úloh do menších, spravovateľných jednotiek vykonávania. Každé vlákno dokáže spracovať špecifickú časť úlohy, vďaka čomu je kód ľahšie pochopiteľný a udržiavateľný.