Thread

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 vs thread

ProcesThread
GeheugenEigen adresruimteGedeeld met andere threads
AanmakenZwaarder (fork)Licht en snel
IsolatieSterkGeen — één crash kan alle threads raken
CommunicatieVia IPC (pipes, sockets)Direct via gedeeld geheugen

Waarom threads?

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.

Op Linux

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

Zie ook

  • proces — een draaiend programma
  • ps — processen en threads tonen
  • top — live overzicht, inclusief threadtelling
linuxprocessen