Obsah

Vlákno (Thread)

Vlákno je základní jednotkou provádění kódu v rámci procesu. Moderní programování je postaveno na tzv. multithreadingu (vícevláknovosti), což umožňuje jedné aplikaci provádět více činností najednou, aniž by se navzájem blokovaly.


Rozdíl mezi Procesem a Vláknem

Je důležité tyto dva pojmy nezaměňovat, i když spolu úzce souvisejí:

Vlastnost Proces (Process) Vlákno (Thread)
Izolace Má vlastní vyhrazenou paměť. Sdílí paměť s ostatními vlákny stejného procesu.
Náročnost „Těžká“ váha (náročné na vytvoření a prostředky). „Lehká“ váha (rychlé vytvoření i přepínání).
Stabilita Pád jednoho procesu neovlivní ostatní. Pád jednoho vlákna může shodit celý proces.

[Image: Process vs Thread memory model - process has its own address space, threads share it]


Proč používáme více vláken?

Představte si moderní webový prohlížeč. Díky multithreadingu může:

Pokud by prohlížeč používal pouze jedno vlákno, při stahování velkého obrázku by celý program „zamrzl“ a přestal reagovat na ovládání.


Vlákna a Hardware (Logická jádra)

Vztah mezi softwarovými vlákny a hardwarem (procesorem) určuje výkon:


Problémy při práci s vlákny

Programování vícevláknových aplikací je náročné, protože vlákna sdílejí stejná data. To vede k rizikům:

[Image: Visualization of a Deadlock - two threads blocking each other]


Typy vláken


Související pojmy: Proces, Multitasking, Hyper-Threading, Core (Jádro), CPU, Deadlock, Synchronizace.