Inhaltsverzeichnis:
Definition - Was bedeutet Multithreading?
Multithreading ist eine Art Ausführungsmodell, mit dem mehrere Threads im Kontext eines Prozesses existieren können, sodass sie unabhängig 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 Stapelzustands im Adressraum seines Hosting-Prozesses.
Multithreading wird auch als Threading bezeichnet.
Techopedia 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 auf mehreren Prozessoren und ist daher schneller. Es erfordert jedoch eine sorgfältigere Programmierung, um nicht-intuitive Verhaltensweisen wie Rennbedingungen, Deadlocks usw. zu vermeiden.
Betriebssysteme verwenden Threading auf zwei Arten:
- Präventives Multithreading, bei dem der Kontextwechsel vom Betriebssystem gesteuert wird. Die Kontextumschaltung kann zu einem ungeeigneten Zeitpunkt durchgeführt werden. Daher kann einem Thread mit hoher Priorität indirekt ein Thread mit niedriger Priorität vorgezogen 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 gemeinsam genutzt wird, sodass alle Threads eine gleiche Zeitscheibe erhalten und in einem warteschlangenbasierten Modus gewartet werden. Während des Threadwechsels wird der Kontext eines zuvor geleerten Threads gespeichert und im nächsten Thread in der Warteschlange erneut geladen. Die Zeitscheibe ist so kurz, dass die laufenden Threads parallel ausgeführt werden.
Diese Definition wurde im Kontext der Computerarchitektur geschrieben