Thread (multithreading)

Thready (z angl. vlákno; súvislosť) alebo hovorovo vlákna v informatike sú nezávisle bežiace úlohy, na ktoré je pri tzv. multithreadingu rozdelený jeden program.

Použitie threadov je spôsob, ako rozdeliť program na dve alebo viac rovnocenne vykonávaných úloh. Viaceré vlákna môžu byť vykonávané naraz – nazýva sa to multithreading (porovnaj s multiprogramovanie). Multithreading sa obyčajne zabezpečuje buď rozdeľovaním času (kde jeden procesor prepína medzi vykonávaním rôznych vlákien) alebo paralelné spracovanie dát - multiprocessing (kde sú vlákna vykonávané na viacerých procesoroch (SMP) či jadrách procesora (CMP)). Vlákno sa podobá procesu, odlišný je spôsob zdieľania prostriedkov a súvisiaci kontext.

Veľa moderných operačných systémov priamo podporuje obidva spôsoby – rozdeľovanie času aj multiprocessing s plánovaním procesov (scheduling). Jadro operačného systému dovoľuje programátorom manipulovať s vláknami cez vyvolania systému. Niektoré implementácie sa nazývaju vlákna jadra (kernel threads) alebo odľahčené procesy. Program môže mať vlákna implementované aj bez podpory operačného systému pomocou časovačov, signálov, alebo inak. Je však potrebné prerušiť vlastné vykonávanie a odtiaľ urobiť vlastné rozdeľovanie času. Tieto vlákna sa niekedy nazývaju používateľské.

Porovnanie vlákien a procesov 
Procesy v tradičných viacúlohových operačných systémoch sa od vlákien odlišujú najmä tým, že procesy:
 sú spravidla nezávislé,
 obsahujú značnú informáciu o svojom stave,
 majú oddelený adresný priestor a
 interagujú len prostredníctvom mechanizmov na medziprocesovú komunikáciu, ktoré poskytuje operačný systém.
Na druhej strane viacero vlákien priamo zdieľa stavové informácie procesu, ako aj pamäť a ďalšie zdroje. Zmena kontextu medzi vláknami jedného procesu je spravidla rýchlejšia ako zmena kontextu medzi procesmi. Systémy ako Windows NT alebo OS/2 majú "lacné" vlákna a "drahé" procesy; v ostatných operačných systémoch nie je medzi vláknami a procesmi taký veľký rozdiel.

Technológie operačných systémov
Programovacie techniky