Sobes.tech
Junior

Čo je to proces a vlákno? V čom sa líšia?

sobes.tech AI

Odpoveď od AI

Proces je bežiaci program, ktorý má vlastný adresný priestor, zdroje (deskriptory súborov, sieťové spojenia) a kontext vykonávania.

Vlákno (thread) je najmenšia jednotka vykonávania v rámci procesu. Jeden proces môže obsahovať jedno alebo viac vlákien, ktoré zdieľajú jeho zdroje, ale majú vlastný zásobník volaní, kontext vykonávania a čítač inštrukcií.

Hlavné rozdiely:

Charakteristika Proces Vlákno (thread)
Izolácia Kompletná. Jeden proces neovplyvňuje iný. Čiastočná. Vlákna zdieľajú zdroje procesu.
Výmena dát Prostredníctvom IPC (medziprocesová komunikácia). Ľahká. Prostredníctvom spoločných premenných v rámci procesu.
Prechod kontextu Nákladný. Vyžaduje uloženie a obnovenie celého stavu procesu. Lacnejšie. Vyžaduje uloženie a obnovenie stavu vlákna.
Vytváranie Nákladné. Vyžaduje alokáciu zdrojov. Lacnejšie. Vyžaduje alokáciu zásobníka.
Ukončenie Ukončenie procesu ukončí všetky jeho vlákna. Ukončenie vlákna neovplyvňuje ostatné vlákna alebo proces.

Príklad vytvorenia procesu (externý príkaz) v Jave:

// Java
Process process = Runtime.getRuntime().exec("ls -l");
// Práca s procesom: získanie vstupu/výstupu a pod.

Príklad vytvorenia vlákna v Jave:

// Java
Runnable task = () -> {
    System.out.println("Ahoj z vlákna: " + Thread.currentThread().getName());
};

Thread thread = new Thread(task);
thread.start(); // Spustenie vlákna