Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hinweis
Die Microsoft Foundation Classes (MFC)-Bibliothek wird weiterhin unterstützt. Wir fügen jedoch keine Features mehr hinzu oder aktualisieren die Dokumentation.
Die MFC-Bibliothek (Microsoft Foundation Class) bietet Unterstützung für Multithreaded-Anwendungen. In diesem Thema werden Prozesse und Threads sowie das MFC-Multithreading beschrieben.
Ein Prozess ist eine ausführende Instanz einer Anwendung. Wenn Sie z. B. auf das Symbol von Editor doppelklicken, starten Sie einen Prozess, der Editor ausführt.
Ein Thread ist ein Ausführungspfad innerhalb eines Prozesses. Wenn Sie Notepad starten, erstellt das Betriebssystem einen Prozess und beginnt mit der Ausführung des primären Threads dieses Prozesses. Bei Beendigung des Threads wird auch der Prozess beendet. Dieser primäre Thread wird dem Betriebssystem durch den Startcode in Form einer Funktionsadresse zur Verfügung gestellt. In der Regel wird die Adresse der main- oder WinMain-Funktion bereitgestellt.
Bei Bedarf können Sie in einer Anwendung zusätzliche Threads erstellen. Sie könnten dies tun, um Hintergrund- oder Wartungsaufgaben auszuführen, wenn Sie nicht möchten, dass der Benutzer darauf warten muss, dass diese abgeschlossen werden. Alle Threads in MFC-Anwendungen werden durch CWinThread-Objekte dargestellt. In den meisten Fällen müssen Sie diese Objekte nicht einmal explizit erstellen. Rufen Sie stattdessen die Framework-Hilfsfunktion AfxBeginThread auf, die das CWinThread Objekt für Sie erstellt.
In MFC werden zwei Threadtypen unterschieden: Benutzeroberflächenthreads und Arbeitsthreads. Benutzeroberflächenthreads werden normalerweise verwendet, um Benutzereingaben zu behandeln und um auf vom Benutzer generierte Ereignisse und Meldungen zu reagieren. Arbeitsthreads werden normalerweise verwendet, um Aufgaben durchzuführen, für die keine Benutzereingaben erforderlich sind (z. B. Neuberechnungen). In der Win32-API findet keine Unterscheidung zwischen Threadtypen statt; es muss lediglich die Startadresse des Threads bekannt sein, damit mit dessen Ausführung begonnen werden kann. MFC behandelt Benutzeroberflächenthreads speziell, indem es eine Meldungspumpe für Ereignisse in der Benutzeroberfläche bereitstellt.
CWinApp ist ein Beispiel für ein Benutzeroberflächenthread-Objekt, da es von CWinThread abgeleitet ist und Ereignisse und Meldungen behandelt, die vom Benutzer generiert wurden.
In Fällen, in denen mehrere Threads auf dasselbe Objekt zugreifen müssen, sollten Sie besondere Vorsicht walten lassen. Multithreading: Programmiertipps beschreibt Techniken, die Ihnen helfen, Probleme zu umgehen, die in diesen Situationen auftreten können. Multithreading: Verwendung der Synchronisierungsklassen beschreibt, wie Sie die Klassen verwenden, die zum Synchronisieren des Zugriffs von mehreren Threads zu einem einzelnen Objekt verfügbar sind.
Das Schreiben und Debuggen von Multithreadprogrammen ist naturgemäß ein komplexes und schwieriges Unterfangen, da Sie sicherstellen müssen, dass nur jeweils ein Thread auf die Objekte zugreift. In den Themen zu Multithreading werden keine Grundlagen der Multithreadprogrammierung vermittelt. Sie erfahren lediglich, wie MFC in einem Multithreadprogramm verwendet werden kann. In den in Visual C++ enthaltenen multithreaded MFC-Beispielen werden einige multithreaded Hinzufügungsfunktionen sowie einige Win32-APIs erläutert, die in MFC nicht enthalten sind. Diese Beispiele sollten jedoch nur als Ausgangspunkt betrachtet werden.
Weitere Informationen dazu, wie das Betriebssystem Prozesse und Threads verarbeitet, finden Sie unter "Prozesse und Threads " im Windows SDK.
Weitere Informationen zur Multithreadunterstützung in MFC finden Sie in folgenden Themen:
Multithreading: Verwendungsweise der Synchronisierungsklassen
Multithreading: Verwendungsmöglichkeiten der Synchronisierungsklassen