Sobes.tech
Junior

Co je to proces a vlákno? V čem se liší?

sobes.tech AI

Odpověď od AI

Proces je spuštěný program, který má vlastní adresní prostor, zdroje (deskriptory souborů, síťová spojení) a kontext vykonávání.

Vlákno (thread) je nejmenší jednotka vykonávání v rámci procesu. Proces může obsahovat jedno nebo více vláken, která sdílejí jeho zdroje, ale mají vlastní zásobník volání, kontext vykonávání a čítač instrukcí.

Hlavní rozdíly:

Charakteristika Proces Vlákno (thread)
Izolace Kompletní. Jeden proces neovlivňuje jiný. Částečná. Vlákna sdílejí zdroje procesu.
Výmena dat Přes IPC (meziprocesová komunikace). Lehká. Přes sdílené proměnné v rámci procesu.
Přepínání kontextu Nákladné. Vyžaduje uložení a obnovení celého stavu procesu. Levnější. Vyžaduje uložení a obnovení stavu vlákna.
Vytváření Nákladné. Vyžaduje alokaci zdrojů. Levnější. Vyžaduje alokaci zásobníku.
Ukončení Ukončení procesu ukončí všechna jeho vlákna. Ukončení vlákna neovlivní ostatní vlákna nebo proces.

Příklad vytvoření procesu (vnější příkaz) v Javě:

// Java
Process process = Runtime.getRuntime().exec("ls -l");
// Práce s procesem: získání vstupu/výstupu atd.

Příklad vytvoření vlákna v Javě:

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

Thread thread = new Thread(task);
thread.start(); // Spuštění vlákna