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