Een thread (uitvoerdraad) is een uitvoeringseenheid binnen een proces. Waar een proces zijn eigen geheugenruimte heeft, delen threads binnen hetzelfde proces geheugen en resources — waardoor ze snel kunnen samenwerken maar ook elkaars data kunnen verstoren.
| Proces | Thread | |
|---|---|---|
| Geheugen | Eigen adresruimte | Gedeeld met andere threads |
| Aanmaken | Zwaarder (fork) | Licht en snel |
| Isolatie | Sterk | Geen — één crash kan alle threads raken |
| Communicatie | Via IPC (pipes, sockets) | Direct via gedeeld geheugen |
Een programma dat meerdere taken tegelijk uitvoert — bijvoorbeeld een webserver die tien verzoeken afhandelt — kan dat met meerdere processen of met meerdere threads doen. Threads zijn sneller op te starten en wisselen efficiënter van context, maar vereisen zorgvuldige synchronisatie om problemen zoals race conditions te voorkomen.
Linux behandelt threads intern als lichtgewicht processen (LWP). Je ziet ze terug in ps met de optie -L:
ps -eLf | grep nginx
Het aantal threads van een proces staat in /proc/<PID>/status:
grep Threads /proc/$(pgrep nginx | head -1)/status