Multithreading

Definition - Was bedeutet Multithreading?

Multithreading ist eine Art Ausführungsmodell, mit dem mehrere Threads im Kontext eines Prozesses vorhanden sein können, sodass sie unabhängig voneinander ausgeführt werden, aber ihre Prozessressourcen gemeinsam nutzen. Ein Thread verwaltet eine Liste von Informationen, die für seine Ausführung relevant sind, einschließlich des Prioritätsplans, der Ausnahmebehandlungsroutinen, einer Reihe von CPU-Registern und des Stapelstatus im Adressraum seines Hosting-Prozesses.

Multithreading wird auch als Threading bezeichnet.

Technische.me erklärt Multithreading

Threading kann in einem Einzelprozessorsystem nützlich sein, indem der Hauptausführungsthread auf Benutzereingaben reagiert, während der zusätzliche Arbeitsthread lang laufende Aufgaben ausführen kann, für die kein Benutzereingriff im Hintergrund erforderlich ist. Das Threading in einem Multiprozessorsystem führt zu einer echten gleichzeitigen Ausführung von Threads über mehrere Prozessoren hinweg und ist daher schneller. Es erfordert jedoch eine sorgfältigere Programmierung, um nicht intuitives Verhalten wie Rennbedingungen, Deadlocks usw. zu vermeiden.

Betriebssysteme verwenden Threading auf zwei Arten:

  • Präventives Multithreading, bei dem der Kontextwechsel vom Betriebssystem gesteuert wird. Das Umschalten des Kontexts kann zu einem unangemessenen Zeitpunkt durchgeführt werden. Daher könnte ein Thread mit hoher Priorität indirekt durch einen Thread mit niedriger Priorität vorbelegt werden.
  • Kooperatives Multithreading, bei dem die Kontextumschaltung vom Thread gesteuert wird. Dies kann zu Problemen wie Deadlocks führen, wenn ein Thread blockiert wird und darauf wartet, dass eine Ressource frei wird.

Die 32- und 64-Bit-Versionen von Windows verwenden vorbeugendes Multithreading, bei dem die verfügbare Prozessorzeit so geteilt wird, dass alle Threads eine gleiche Zeitscheibe erhalten und in einem warteschlangenbasierten Modus bedient werden. Während des Threadwechsels wird der Kontext eines vorab leeren Threads gespeichert und im nächsten Thread in der Warteschlange neu geladen. Die Zeitscheibe ist so kurz, dass die laufenden Threads parallel ausgeführt werden.

Diese Definition wurde im Kontext der Computerarchitektur geschrieben