Share via


Threads und Prozesse

Aktualisiert: November 2007

Threads und Prozesse sind verwandte Konzepte der Informatik. Beide stellen Folgen von Anweisungen dar, die in einer bestimmten Reihenfolge ausgeführt werden müssen. Anweisungen von verschiedenen Threads oder Prozessen können aber parallel ausgeführt werden.

Prozesse werden im Betriebssystem verwaltet und entsprechen dem, was Benutzer als Programme oder Anwendungen sehen. Ein Thread hingegen wird von einem Prozess verwaltet. Aus diesem Grund werden Threads gelegentlich als Lightweightprozesse bezeichnet. Jeder Prozess besteht aus einem oder mehreren Threads.

Die Möglichkeit, mehrere Prozesse auszuführen, versetzt einen Computer in die Lage, mehr als eine Aufgabe gleichzeitig auszuführen. Das Vorhandensein mehrerer Threads versetzt einen Prozess in die Lage, Arbeiten so aufzuteilen, dass sie parallel ausgeführt werden können. Auf einem Computer mit Multiprozessoren können Prozesse oder Threads auf verschiedenen Prozessoren ausgeführt werden. Dies ermöglicht eine echte Parallelverarbeitung.

Echte Parallelverarbeitung ist nicht immer möglich. Threads müssen manchmal synchronisiert werden. Ein Thread muss möglicherweise auf das Ergebnis eines anderen Threads warten, oder ein Thread benötigt exklusiven Zugriff auf eine Ressource, die von einem anderen Thread verwendet wird. Synchronisierungsprobleme sind eine häufige Ursache von Programmfehlern in Multithreadanwendungen. Es kann passieren, dass Threads auf eine Ressource warten, die nie verfügbar wird. Dies führt zu einem Zustand, der Deadlock genannt wird.

Der Visual Studio-Debugger stellt leistungsstarke und benutzerfreundliche Tools zum Debuggen von Threads und Prozessen bereit.

Tools zum Debuggen von Threads und Prozessen in Visual Studio

Die wichtigsten Tools für die Arbeit mit Prozessen in Visual Studio sind das Dialogfeld An den Prozess anhängen sowie das Prozessfenster und die Symbolleiste Debugspeicherort. Die wichtigsten Tools für das Debuggen von Threads sind das Threadfenster, Threadmarker in Quellcodefenstern sowie die Symbolleiste Debugspeicherort.

In der folgenden Tabelle sind die verfügbaren Informationen und die an jeder Stelle möglichen Aktionen aufgeführt:

Benutzeroberfläche

Verfügbare Informationen

Ausführbare Aktionen

Dialogfeld An den Prozess anhängen

Verfügbare Prozesse, an die angehängt werden kann:

  • Prozessname (.exe)

  • Prozess-ID-Nummer

  • Menüleistentitel

  • Typ (verwaltet, x86, x64, IA64)

  • Benutzername (Kontoname)

  • Sitzungsnummer

Auswahl eines Prozesses, an den angehängt werden soll.

Auswählen eines Remotecomputers

Ändern des Transporttyps für die Verbindung mit Remotecomputern

Prozessfenster

Angehängte Prozesse:

  • Prozessname

  • Prozess-ID-Nummer

  • Pfad zur EXE-Datei des Prozesses

  • Menüleistentitel

  • Zustand (Unterbrechen, Aktiv)

  • Debuggen (Systemeigen, Verwaltet usw.)

  • Transporttyp (standardmäßig, systemeigen ohne Authentifizierung, intelligente Geräte)

  • Transportqualifizierer (Remotecomputer)

Tools:

  • Anhängen

  • Trennen

  • Beenden

Kontextmenü:

  • Anhängen

  • Trennen

  • Nach Beenden des Debuggens trennen

  • Beenden

Threadfenster

Threads in aktuellem Prozess:

  • Thread-ID

  • Kategorie (Hauptthread, Benutzeroberflächenthread, Remoteprozeduraufruf-Handler oder Workerthread)

  • Threadname

  • Ort, an dem der Thread erstellt wird

  • Priorität

  • Unterbrechungsebene

Kontextmenü:

  • Zu Thread wechseln

  • Ausgeführten Thread sperren

  • Gesperrten Thread entsperren

  • Thread zur weiteren Überprüfung kennzeichnen

  • Kennzeichnung eines Threads aufheben

  • Thread umbenennen

  • Threads anzeigen und ausblenden

Sonstige Aktionen:

  • Aufrufliste für einen Thread in einem DataTip anzeigen

Quellcodefenster

Threadindikatoren im linken Bundsteg weisen auf einzelne oder mehrere Threads hin

Kontextmenü:

  • Zu einem Thread wechseln

  • Thread zur weiteren Überprüfung kennzeichnen

  • Kennzeichnung eines Threads aufheben

Symbolleiste Debugspeicherort

  • Aktueller Prozess

  • Aktueller Thread

  • Aktueller Stapelrahmen

  • Zu einem anderen Prozess wechseln

  • Zu einem anderen Thread im aktuellem Prozess wechseln

  • Zu einem anderen Stapelrahmen in aktuellem Thread wechseln

  • Aktuellen Thread kennzeichnen bzw. Kennzeichnung aufheben

  • Nur gekennzeichnete Threads anzeigen

Siehe auch

Aufgaben

Gewusst wie: Verwenden des Fensters "Prozesse"

Weitere Ressourcen

Anhängen an laufende Prozesse

Debuggen von Multithreadanwendungen