Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De Microsoft Foundation Class-bibliotheek (MFC) biedt ondersteuning voor multithreaded toepassingen. In dit onderwerp worden processen en threads en de MFC-benadering voor multithreading beschreven.
Een proces is een exemplaar van een toepassing dat wordt uitgevoerd. Wanneer u bijvoorbeeld dubbelklikt op het pictogram Kladblok, start u een proces dat Kladblok uitvoert.
Een thread is een uitvoeringspad binnen een proces. Wanneer u Kladblok start, maakt het besturingssysteem een proces aan en start met het uitvoeren van de primaire thread van dat proces. Wanneer deze thread wordt beëindigd, eindigt het proces ook. Deze primaire thread wordt door de opstartcode aan het besturingssysteem geleverd in de vorm van een functieadres. Meestal is het het adres van de main of WinMain functie die wordt opgegeven.
U kunt desgewenst extra threads in uw toepassing maken. U kunt dit doen om achtergrond- of onderhoudstaken af te handelen wanneer u niet wilt dat de gebruiker wacht totdat deze is voltooid. Alle threads in MFC-toepassingen worden vertegenwoordigd door CWinThread-objecten . In de meeste gevallen hoeft u deze objecten niet eens expliciet te maken; roep in plaats daarvan de framework-helperfunctie AfxBeginThread aan, waarmee het CWinThread object voor u wordt gemaakt.
MFC onderscheidt twee soorten threads: gebruikersinterface-threads en werkthreads. Threads in de gebruikersinterface worden vaak gebruikt om gebruikersinvoer te verwerken en te reageren op gebeurtenissen en berichten die door de gebruiker worden gegenereerd. Worker threads worden vaak gebruikt om taken te voltooien, zoals herberekening, waarvoor geen gebruikersinvoer nodig is. De Win32-API maakt geen onderscheid tussen typen threads; alleen het beginadres van de thread moet weten, zodat de thread kan worden uitgevoerd. MFC verwerkt threads van gebruikersinterfaces speciaal door een berichtpomp te leveren voor gebeurtenissen in de gebruikersinterface.
CWinApp is een voorbeeld van een threadobject van de gebruikersinterface, omdat het is afgeleid van CWinThread gebeurtenissen en berichten die door de gebruiker zijn gegenereerd en verwerkt.
Er moet speciale aandacht worden besteed aan situaties waarin meer dan één thread mogelijk toegang tot hetzelfde object vereist. Multithreading: Programmeertips beschrijven technieken die u kunt gebruiken om problemen te omzeilen die zich in deze situaties kunnen voordoen. Multithreading: In de synchronisatieklassen wordt beschreven hoe u de klassen gebruikt die beschikbaar zijn om de toegang van meerdere threads met één object te synchroniseren.
Het schrijven en opsporen van fouten in multithreaded programmeren is inherent een gecompliceerde en lastige onderneming, omdat u ervoor moet zorgen dat objecten niet door meer dan één thread tegelijk worden geopend. De multithreading-onderwerpen leren niet de basisprincipes van multithreaded programmeren, alleen hoe u MFC gebruikt in uw multithreaded-programma. De multithreaded MFC-voorbeelden die zijn opgenomen in Visual C++ illustreren enkele multithreaded Adding Functionality and Win32-API's die niet zijn opgenomen in MFC; ze zijn echter alleen bedoeld als uitgangspunt.
Zie Processen en threads in de Windows SDK voor meer informatie over hoe het besturingssysteem processen en threads verwerkt.
Zie de volgende onderwerpen voor meer informatie over MFC-ondersteuning voor multithreading:
Zie ook
Ondersteuning voor multithreading voor oudere code (Visual C++)