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