2 Prozesse & ThreadsThreads

Threads

Auf einen Blick

Ein Thread ist eine leichtgewichtige, aktive Untereinheit eines Prozesses — eine „virtuelle CPU". Threads eines Prozesses teilen sich Code, Daten und Dateien, haben aber eigenen Stack und eigene Register.

Motivation

Manchmal ist das volle Prozesskonzept zu aufwendig — etwa wenn ein Programm aus mehreren eigenständigen Abläufen besteht. Als leichtgewichtige Ergänzung bieten viele OS daher Threads auf Programmierebene.

Ein Thread ist ein thread of execution in der Prozessumgebung. Threads eines Prozesses unterscheiden sich durch ihren Zustand: state-Variable, Kontrollblock und vor allem den Stack.

Geteilt vs. privat

Klicke die Elemente an, um zu sehen, was Threads teilen und was privat ist:

prozess-vs-thread.html

Vor- & Nachteile

Vorteile (+)

  • Effizienzvorteile; erlauben Parallelisierung eines Programmablaufs
  • Kommunikation zwischen Threads desselben Prozesses ist einfacher und schneller als zwischen Prozessen (gemeinsamer Speicher)
  • werden von manchen OS schneller verarbeitet (günstiger Kontextwechsel)

Nachteile (−)

  • in der Programmierung kritischer: viele gemeinsame Ressourcen → Race Conditions
  • schlechtere Separierbarkeit der Anwendung
  • beim Absturz eines Threads bricht meist der gesamte Prozess ab

Operationen & APIs

Ähnlich wie bei Prozessen: Starten/Stoppen, Attribute setzen (z.B. Priorität), Zustand ändern (sleep). Eine Besonderheit sind die Operationen zur Synchronisation (oft Teil der Thread-Bibliothek selbst → Kapitel 3).

  • Linux: POSIX Threads (pthreads)
  • Windows: Win32/Win64-API
Multi-threaded / nebenläufig

Programme aus zwei oder mehr Threads heißen multi-threaded oder nebenläufig. Genau hier wird Synchronisation unverzichtbar.

Verwandte Notes

Prozess · Prozesskontext & Kontextwechsel · Race Conditions · Semaphoren · Scheduling-Grundlagen

← Kapitelübersicht ����


⬅️ Operationen auf Prozessen

Built with LogoFlowershow