Wielowątkowość C++ i MFC
Biblioteka Microsoft Foundation klasy (MFC) zapewnia obsługę aplikacji wielowątkowych.W tym temacie opisano procesy i wątki i podejście MFC do wielowątkowości.
Proces jest wykonującego wystąpienie aplikacji.Na przykład po dwukrotnym kliknięciu ikony programu Notatnik, Rozpocznij proces, który jest uruchamiany program Notatnik.
Wątek jest ścieżka realizacji w ramach procesu.Podczas uruchamiania programu Notatnik, system operacyjny tworzy proces i rozpoczyna wykonywanie główny wątek procesu.Gdy wątek ten kończy działanie, co powoduje procesu.Ten główny wątek jest dostarczany do systemu operacyjnego przez kod startowy w formie adresu funkcji.Zazwyczaj jest to adres główne lub WinMain funkcji, które zostały dostarczone.
Jeśli chcesz, można tworzyć dodatkowe wątki w aplikacji.Można to zrobić, aby obsłużyć zadań tła lub konserwacji, gdy nie ma użytkownika oczekiwania na ich zakończenie.Wszystkie wątki w aplikacjach MFC są reprezentowane przez CWinThread obiektów.W większości sytuacji nawet trzeba jawnie tworzyć obiekty te; Zamiast tego wywołania funkcji pomocnika RAM AfxBeginThread, który tworzy CWinThread obiekt.
MFC rozróżnia się dwa rodzaje wątków: wątki interfejsu użytkownika i wątków roboczych.Wątki interfejsu użytkownika są powszechnie używane do obsługi danych wejściowych użytkownika i reagowania na zdarzenia i komunikaty generowane przez użytkownika.Wątki robocze są często używane do wykonywania zadań, takich jak ponowne obliczanie, nie wymagają danych wejściowych użytkownika.Win32 API nie rozróżnia rodzaje wątki; po prostu musi znać adres początkowy wątku, więc można rozpocząć wykonywanie wątku.MFC obsługuje interfejs użytkownika wątków specjalnie, dostarczając pompowania komunikatów zdarzeń w interfejsie użytkownika.CWinAppjest to przykład obiekt wątku interfejsu użytkownika, ponieważ wywodzi się z CWinThread i obsługuje zdarzenia i komunikaty generowane przez użytkownika.
Należy zwrócić szczególną uwagę na sytuacje, gdy więcej niż jeden wątek może wymagać dostępu do tego samego obiektu.Multithreading: Porady dotyczące programowania opisuje metody, których można obejść problemów mogących wystąpić w następujących sytuacjach.Multithreading: Dotyczące używania klas synchronizacji opisuje sposób używania klas, które są dostępne zsynchronizować dostęp z wielu wątków do pojedynczego obiektu.
Pisanie i debugowanie programowania wielowątkowego jest założenia przedsiębiorstwa skomplikowane i trudne, ponieważ muszą zapewnić, że obiekty nie są dostępne przez więcej niż jeden wątek na raz.Tematy wielowątkowości nie nauczanie podstaw programowania wielowątkowego, tylko, jak używać klasy MFC w programie wielowątkowe.Wielowątkowa próbek MFC zawarte w programie Visual C++ ilustrują kilka wielowątkowe Dodawanie funkcji API Win32 i nie dotyczy MFC; Jednakże tylko mają być punkt początkowy.
Aby uzyskać więcej informacji na temat jak system operacyjny obsługuje procesów i wątków, zobacz procesy i wątki w Windows SDK.
Aby uzyskać więcej informacji na temat wielowątkowości wsparcie MFC zobacz następujące tematy: