Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Biblioteka klasy Microsoft Foundation (MFC) zapewnia obsługę aplikacji wielowątków. W tym temacie opisano procesy i wątki oraz podejście MFC do wielowątku.
Proces jest wykonywaniem wystąpienia aplikacji. Na przykład po dwukrotnym kliknięciu ikony Notatnika uruchomisz proces uruchamiający Notatnik.
Wątek jest ścieżką wykonywania w procesie. Po uruchomieniu Notatnika system operacyjny tworzy proces i rozpoczyna wykonywanie podstawowego wątku tego procesu. Gdy ten wątek zakończy się, w ten sposób proces. Ten wątek podstawowy jest dostarczany do systemu operacyjnego przez kod uruchamiania w postaci adresu funkcji. Zazwyczaj jest to adres podanej main funkcji lub WinMain .
Jeśli chcesz, możesz utworzyć dodatkowe wątki w aplikacji. Możesz to zrobić, aby obsługiwać zadania w tle lub konserwacji, gdy nie chcesz, aby użytkownik czekał na ich ukończenie. Wszystkie wątki w aplikacjach MFC są reprezentowane przez obiekty CWinThread . W większości sytuacji nawet nie trzeba jawnie tworzyć tych obiektów; Zamiast tego wywołaj funkcję pomocnika platformy AfxBeginThread, która tworzy CWinThread obiekt.
MFC rozróżnia dwa typy wątków: wątki interfejsu użytkownika i wątki robocze. Wątki interfejsu użytkownika są często używane do obsługi danych wejściowych użytkownika i reagowania na zdarzenia i komunikaty generowane przez użytkownika. Wątki procesów roboczych są często używane do wykonywania zadań, takich jak ponowne obliczanie, które nie wymagają danych wejściowych użytkownika. Interfejs API Win32 nie rozróżnia typów wątków; musi tylko znać adres początkowy wątku, aby można było rozpocząć wykonywanie wątku. MFC obsługuje wątki interfejsu użytkownika specjalnie, dostarczając pompę komunikatów dla zdarzeń w interfejsie użytkownika.
CWinApp jest przykładem obiektu wątku interfejsu użytkownika, ponieważ pochodzi z CWinThread i obsługuje zdarzenia i komunikaty generowane przez użytkownika.
Szczególną uwagę należy zwrócić na sytuacje, w których więcej niż jeden wątek może wymagać dostępu do tego samego obiektu. Wielowątkowość: Porady dotyczące programowania opisują techniki, których można użyć do poruszania się po problemach, które mogą wystąpić w takich sytuacjach. Wielowątkowość: Jak używać klas synchronizacji opisuje sposób używania klas, które są dostępne do synchronizowania dostępu z wielu wątków do jednego obiektu.
Pisanie i debugowanie programowania wielowątkowego jest z natury skomplikowanym i trudnym przedsięwzięciem, ponieważ należy upewnić się, że obiekty nie są jednocześnie dostępne przez więcej niż jeden wątek. Tematy wielowątku nie uczą podstaw programowania wielowątkowego, tylko sposobu używania MFC w programie wielowątkowym. Wielowątkowe przykłady MFC zawarte w visual C++ ilustrują kilka wielowątkowych interfejsów API dodawania i win32, które nie obejmują MFC; jednak są one przeznaczone tylko do punktu wyjścia.
Aby uzyskać więcej informacji na temat sposobu obsługi procesów i wątków przez system operacyjny, zobacz Procesy i wątki w zestawie Windows SDK.
Aby uzyskać więcej informacji na temat obsługi wielowątków MFC, zobacz następujące tematy:
Zobacz też
Obsługa wielowątkowości w przypadku starszego kodu (Visual C++)