Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Microsoft Foundation Class (MFC) kódtár támogatja a többszálú alkalmazásokat. Ez a témakör a folyamatokat és a szálakat, valamint a többszálúság MFC-megközelítését ismerteti.
A folyamat egy alkalmazás végrehajtó példánya. Ha például duplán a Jegyzettömb ikonra kattint, elindít egy folyamatot, amely a Jegyzettömbet futtatja.
A szál egy folyamaton belüli végrehajtási útvonal. A Jegyzettömb indításakor az operációs rendszer létrehoz egy folyamatot, és megkezdi a folyamat elsődleges szálának végrehajtását. Amikor ez a szál leáll, a folyamat is. Ezt az elsődleges szálat az indítási kód adja meg az operációs rendszernek függvénycím formájában. Általában a main vagy a WinMain függvény címe van megadva.
Igény szerint további szálakat is létrehozhat az alkalmazásban. Érdemes lehet a háttér- vagy karbantartási feladatokat kezelni, ha nem szeretné, hogy a felhasználó megvárja a befejezésüket. Az MFC-alkalmazások összes szálát CWinThread-objektumok képviselik. A legtöbb esetben nem is kell explicit módon létrehoznia ezeket az objektumokat; ehelyett hívja meg az AfxBeginThread keretrendszer-segédfüggvényt, amely létrehozza az CWinThread objektumot.
Az MFC két száltípust különböztet meg: a felhasználói felületi szálakat és a feldolgozói szálakat. A felhasználói felületi szálakat gyakran használják a felhasználói bemenetek kezelésére, valamint a felhasználó által létrehozott eseményekre és üzenetekre való válaszadásra. A munkavégző szálakat gyakran használják olyan feladatok elvégzésére, mint például az újraszámítás, amelyek nem igényelnek felhasználói bemenetet. A Win32 API nem tesz különbséget a szálak típusai között; csak ismernie kell a szál kezdőcímét, hogy megkezdhesse a szál végrehajtását. Az MFC a felhasználói felületi szálakat úgy kezeli, hogy egy üzenetszivattyút biztosít a felhasználói felületen lévő eseményekhez.
CWinApp egy példa egy felhasználói felületi szálobjektumra, mert a felhasználó által létrehozott eseményekből és üzenetekből CWinThread származik és kezeli azt.
Különös figyelmet kell fordítani az olyan helyzetekre, amikor egynél több szál is hozzáférést igényelhet ugyanahhoz az objektumhoz. Többszálú: A programozási tippek olyan technikákat írnak le, amelyekkel megkerülheti az ilyen helyzetekben felmerülő problémákat. Többszálas: A szinkronizálási osztályok használata azt ismerteti, hogyan használhatja azokat az osztályokat, amelyek több szálról egyetlen objektumra szinkronizálják a hozzáférést.
A többszálas programozás írása és hibakeresése eredendően bonyolult és trükkös vállalkozás, mivel gondoskodnia kell arról, hogy az objektumokhoz egyszerre több szál ne férhessen hozzá. A többszálú témakörök nem tanítják meg a többszálú programozás alapjait, csak az MFC használatát a többszálú programban. A Visual C++-ban található többszálú MFC-minták néhány többszálú bővítményfunkciót és Win32 API-kat szemléltetnek, amelyeket az MFC nem foglal magában; azonban csak kiindulópontként szolgálnak.
További információ arról, hogy az operációs rendszer hogyan kezeli a folyamatokat és a szálakat: Folyamatok és szálak a Windows SDK-ban.
Az MFC többszálú támogatásával kapcsolatos további információkért tekintse meg az alábbi témaköröket: