Thread (Informatik)

Ausführungsstrang oder eine Ausführungsreihenfolge in der Abarbeitung eines Programms
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 19. September 2004 um 12:35 Uhr durch 84.128.104.163 (Diskussion) (Literatur). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Unter einem Thread (engl. Faden, Strang) versteht man

  1. im Usenet und in vergleichbaren Web-Foren eine Folge von Diskussionsbeiträgen, von denen jeder mit Ausnahme des Ursprungs einen anderen Beitrag beantwortet (durch Bezugnahme mit einem References:-Feld) und die deshalb hierarchisch organisiert sind,
  2. in der Software-Architektur einen Ausführungsstrang innerhalb eines Prozesses, der nebenläufig zu anderen Threads ausgeführt werden kann.

Die folgenden Erläuterungen beziehen sich auf zweiteres.

Auf Betriebssystemen, die Threads unterstützen, ist der Verwaltungsaufwand für Threads üblicherweise geringer als der für Prozesse. Dadurch können beispielsweise die Taskumschaltzeiten bei Threads geringer ausfallen als bei Prozessen.

Ein Thread teilt sich mit den anderen vorhandenen Threads des zugehörigen Prozesses den gleichen Adressraum, so dass auf Speicher und andere auf den Adressraum abgebildete Betriebsmittel von allen Threads innerhalb des Prozesses direkt und gleichberechtigt zugegriffen werden kann. Dabei ggf. entstehende Zugriffskonflikte müssen durch den Einsatz von Synchronisationsmechanismen aufgelöst werden.

Da Threads, die dem selben Prozess zugeordnet sind, den gleichen Adressraum verwenden, ist eine Kommunikation zwischen diesen Threads von vorneherein möglich (vgl. mit Interprozesskommunikation bei Prozessen).

Threads innerhalb des gleichen Prozesses verwenden voneinander unabhängige Stapel (Stacks), die unterschiedlichen Abschnitten des Adressraums zugeordnet sind.

Jeder "Programmfaden" ist für die Ausführung einer bestimmten Aufgabe verantwortlich. Die Ausführungsstränge der Programmfunktionen können damit in überschaubare Einheiten aufgeteilt werden.

Siehe auch

Literatur

  • Marcus Roming, Joachim Rohde: Assembler - Grundlagen der Programmierung. MITP-Verlag, ISBN 3-8266-0671-X
  • Olaf Neuendorf: Windows Multithreading mit C++ und C#. MITP-Verlag, ISBN 3-8266-0989-1
  • Heinz Kredel, Akitoshi Yoshida: Thread- und Netzwerk-Programmierung mit Java. Dpunkt Verlag, ISBN 3-89864-133-3
  • Rainer Oechsle: Parallele Programmierung mit Java Threads. Hanser Fachbuchverlag, ISBN 3-446-21780-0
  • Andres S. Tanenbaum: Moderne Betriebssysteme. Pearson Studium Verlag, ISBN 3-8273-7019-1

Externe Verweise