На этом шаге мы приведем классификацию потоков.
В MFC различают два типа потоков:
Эта разница характерна только для MFC - в обычном Win32 API ее нет.
На рабочие потоки в основном возлагаются фоновые задачи, не требуюшие пользовательского ввода. Например в таких потоках выполняются функции резервного копирования баз данных и функции, следящие за состоянием компьютерной сети.
Потоки пользовательского интерфейса могут обслуживать ввод пользователя, и в них реализован цикл обработки событий и сообщений, возникающих в результате взаимодействия пользователя и приложения. Типичным примером такого потока является первичный поток приложения, который представлен классом приложения, производным от CWinApp. Вторичные потоки пользовательского интерфейса способны обеспечивать взаимодействие с приложением, не снижая скорости выполнения остальных функций приложения. В качестве примера рассмотрим приложение, с помощью которого анестезиологи контролируют состояние оперируемого пациента. Поток пользовательского интерфейса позволяет ему заносить в базу данных названия вводимых пациенту препаратов, не прерывая потоки, обрабатывающие данные о состоянии жизненно важных функций больного.
Генерируют дополнительный поток в MFC-приложении средствами функции AfxBeginThread(), существующей в двух вариантах, один из которых создает рабочие потоки, а другой - потоки пользовательского интерфейса. Особенности их работы мы рассмотрим далее.
На следующем шаге мы рассмотрим создание рабочего потока.