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