Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Замечание
Библиотека классов Microsoft Foundation (MFC) продолжает поддерживаться. Однако мы больше не добавляем функции или обновляем документацию.
Библиотека класса Microsoft Foundation (MFC) обеспечивает поддержку многопоточных приложений. В этом разделе описываются процессы и потоки и подход MFC к многопоточности.
Процесс — это исполняемый экземпляр приложения. Например, при двойном щелчке значка Блокнота запускается процесс запуска блокнота.
Поток — это поток выполнения в процессе. При запуске Блокнота операционная система создает процесс и начинает выполнять основной поток этого процесса. После завершения этого потока завершается и процесс. Этот основной поток предоставляется операционной системе с помощью кода запуска в виде адреса функции. Обычно предоставляется адрес функции main или WinMain.
При необходимости можно создать дополнительные потоки в приложении. Это может быть полезно для выполнения фоновых или обслуживающих задач, когда вы не хотите, чтобы пользователь ждал их завершения. Все потоки в приложениях MFC представлены объектами CWinThread . В большинстве случаев даже не нужно явно создавать эти объекты; вместо этого вызовите вспомогательной функции платформы AfxBeginThread, которая создает CWinThread объект для вас.
MFC различает два типа потоков: потоки пользовательского интерфейса и рабочие потоки. Потоки пользовательского интерфейса обычно используются для обработки ввода пользователем и реагирования на события и сообщения, созданные пользователем. Рабочие потоки обычно используются для выполнения задач, таких как пересчет, которые не требуют ввода пользователем. API Win32 не различает типы потоков; Он просто должен знать начальный адрес потока, чтобы он смог начать выполнение потока. MFC обрабатывает потоки пользовательского интерфейса специально путем предоставления насоса сообщений для событий в пользовательском интерфейсе.
CWinApp является примером объекта потока пользовательского интерфейса, так как он наследуется от CWinThread и обрабатывает события и сообщения, создаваемые пользователем.
Особое внимание следует уделять ситуациям, когда нескольким потокам может потребоваться доступ к одному объекту. Многопоточность. Советы по программированию описывают методы , которые можно использовать для решения проблем, которые могут возникнуть в этих ситуациях. Многопоточность. Использование классов синхронизации описывает, как использовать классы, доступные для синхронизации доступа из нескольких потоков в один объект.
Написание и отладка многопоточного программирования по сути является сложной и сложной задачей, так как необходимо убедиться, что объекты не обращаются к нескольким потокам одновременно. Многопоточные разделы не учат основам многопоточного программирования, только как использовать MFC в многопоточной программе. Многопоточные примеры MFC, включенные в Visual C++, иллюстрируют несколько многопоточных api добавления функций и API Win32, не охватываемых MFC; однако они предназначены только для того, чтобы быть отправной точкой.
Дополнительные сведения о том, как операционная система обрабатывает процессы и потоки, см. в статье "Процессы и потоки " в пакете SDK для Windows.
Дополнительные сведения о поддержке многопоточных операций MFC см. в следующих разделах: