Thread

Threads sind unabhängig voneinander ablaufende Befehlsfolgen innerhalb eines Prozesses (siehe Prozess). Die Threads eines Prozesses teilen sich dessen Adressraum und dessen Ressourcen.
  
Jeder Thread ist zu jedem Zeitpunkt in einem der Zustände bereit, rechnend, wartend oder beendet.

Wenn ein Thread erzeugt wird, gelangt er zunächst in den Zustand bereit. Sobald ein Prozessor frei wird (in dem ein rechnender Thread in den Zustand wartend, beendet oder bereit wechselt), wird vom Scheduler einer unter den bereiten Threads ausgewählt, der in den Zustand rechnend wechseln darf. Nur rechnenden Threads steht ein Prozessor zur Verfügung.
  
Ein rechnender Thread gerät in den Zustand wartend, wenn er einen Systemaufruf tätigt, von dem erst zurückgekehrt werden kann, wenn z.B.

eine Ressource verfügbar wird,
ein Gerät eine Aktion beendet hat,
eine virtuelle Seite im physikalischen Speicher eingelagert wird,
der Benutzer eine Taste drückt oder die Maus bewegt.

Threads können sich durch Aufruf von speziellen Bibliotheks- oder Systemprozeduren auch gegenseitig synchronisieren (siehe Synchronisierung). Ein Thread kann deshalb auch in den Zustand wartend gelangen, wenn er auf die Freigabe einen Semaphor, einen Mutex oder Ähnliches warten muss.