Freigeben über


Thread- und Taskarchitektur

Threads sind eine Funktion des Betriebssystems, die die Verteilung von Anwendungslogik auf mehrere gleichzeitige Ausführungspfade ermöglicht. Diese Funktion ist insbesondere dann hilfreich, wenn komplexe Anwendungen viele Tasks besitzen, die gleichzeitig ausgeführt werden können.

Wenn ein Betriebssystem eine Instanz einer Anwendung ausführt, wird eine als Prozess bezeichnete Einheit erstellt, um die Instanz zu verwalten. Der Prozess besitzt einen so genannten Ausführungsthread. Dabei handelt es sich um eine Folge von Programmieranweisungen, die vom Anwendungscode ausgeführt werden. In einer einfachen Anwendung beispielsweise, mit einem einzigen Satz an Anweisungen, die seriell ausgeführt werden können, gibt es nur einen Ausführungspfad oder -thread durch die Anwendung. Komplexere Anwendungen können mehrere Tasks besitzen, die gleichzeitig anstatt seriell ausgeführt werden können. Dies erfolgt, indem die Anwendung einen eigenen Prozess für jeden Task startet. Das Starten eines Prozesses ist jedoch ein ressourcenintensiver Vorgang, der vermieden werden kann, indem die Anwendung anstelle von Prozessen separate Threads startet. Dieser Vorgang nimmt weniger Ressourcen in Anspruch. Außerdem kann das Ausführen der einzelnen Threads unabhängig von anderen Threads geplant werden, die einem Prozess zugeordnet sind.

Threads ermöglichen, dass komplexe Anwendungen CPUs effizienter verwenden; dies gilt auch für Computer mit nur einer CPU. Bei einer einzigen CPU kann zu einem bestimmten Zeitpunkt immer nur ein Thread ausgeführt werden. Wenn ein Thread einen umfangreiche Vorgang ausführt, für die die CPU nicht verwendet wird, z. B. beim Lesen oder Schreiben vom bzw. auf den Datenträger, kann so lange ein anderer Thread ausgeführt werden, bis der erste Vorgang beendet ist. Da es möglich ist, Threads auszuführen, während andere Threads auf das Abschließen eines Vorgangs warten, kann eine Anwendung die CPU optimal nutzen. Dies gilt insbesondere für Multibenutzeranwendungen mit umfangreichen E/A-Vorgängen, wie es bei einem Datenbankserver der Fall ist. Computer mit mehreren Mikroprozessoren oder CPUs können gleichzeitig nur einen Thread pro CPU ausführen. Wenn ein Computer beispielsweise über acht CPUs verfügt, können gleichzeitig acht Threads ausgeführt werden.

In diesem Abschnitt