Составители:
Рубрика:
// TODO: здесь выполняются все операции очистки для потока
…
return CWinThread::ExitInstance();
}
BEGIN_MESSAGE_MAP(CThreadExample, CWinThread)
//{{AFX_MSG_MAP(CThreadExample)
//}}AFX_MSG_MAP
END_MESSAGE_MAP ()…
Объект класса CWinThread представляет поток выполнения в рамках при-
ложения. Хотя основной поток выполнения приложения обычно задается объ-
ектом класса, порожденного от CWinApp, сам класс CWinApp является произ-
водным от класса CWinThread.
Для обеспечения безопасности потоков в MFC-приложениях должны
применяться классы, являющиеся производными от класса CWinThread, биб-
лиотека MFC использует переменные-члены этого класса. Потоки, созданные с
помощью функции_beqinthreadex(), не могут использовать ни одной из API-
функций библиотеки MFC.
Поддерживаются два основных типа потоков, а именно рабочие и интер-
фейсные. Для рабочих потоков не нужно создавать цикл обработки сообщений.
Такие потоки могут выполнять фоновые вычисления в электронной таблице без
взаимодействия с пользователем и не должны реагировать на сообщения.
Интерфейсные потоки в отличие от рабочих обрабатывают сообщения,
полученные от системы (или от пользователя). Для них необходима специаль-
ная процедура обработки сообщений. Создаются интерфейсные потоки на базе
класса CWinApp или непосредственно класса CWinThread.
Объект класса CWinThread обычно существует в течение всего времени
существования потока, однако такой способ функционирования можно изме-
нить, присвоив переменной-члену m_bAutoDelete значение FALSE.
Потоки создаются с помощью функции AfxBeqinThread. Для создания ин-
терфейсного потока функции AfxBeqinThread следует передать указатель на
класс CRuntimeClass объекта, производного от класса CWinThread.
В случае рабочих потоков функция AfxBeqinThread() вызывается с указанием
управляющей функции и параметра, передаваемого последней.
Как для рабочих, так и для интерфейсных потоков можно указать допол-
нительные параметры, изменяющие приоритет, размер стека, флаги создания и
атрибуты безопасности потока. Функция AfxBeqinThread() возвращает указа-
тель на новый объект класса CWinThread.
В качестве альтернативного варианта можно определить, а затем создать
объект, производный от класса CWinThread, вызвав функцию CreateThread()
данного класса. В этом случае производный объект может многократно исполь-
зоваться при последовательных созданиях и уничтожениях потока.
36
// TODO: здесь выполняются все операции очистки для потока
…
return CWinThread::ExitInstance();
}
BEGIN_MESSAGE_MAP(CThreadExample, CWinThread)
//{{AFX_MSG_MAP(CThreadExample)
//}}AFX_MSG_MAP
END_MESSAGE_MAP ()…
Объект класса CWinThread представляет поток выполнения в рамках при-
ложения. Хотя основной поток выполнения приложения обычно задается объ-
ектом класса, порожденного от CWinApp, сам класс CWinApp является произ-
водным от класса CWinThread.
Для обеспечения безопасности потоков в MFC-приложениях должны
применяться классы, являющиеся производными от класса CWinThread, биб-
лиотека MFC использует переменные-члены этого класса. Потоки, созданные с
помощью функции_beqinthreadex(), не могут использовать ни одной из API-
функций библиотеки MFC.
Поддерживаются два основных типа потоков, а именно рабочие и интер-
фейсные. Для рабочих потоков не нужно создавать цикл обработки сообщений.
Такие потоки могут выполнять фоновые вычисления в электронной таблице без
взаимодействия с пользователем и не должны реагировать на сообщения.
Интерфейсные потоки в отличие от рабочих обрабатывают сообщения,
полученные от системы (или от пользователя). Для них необходима специаль-
ная процедура обработки сообщений. Создаются интерфейсные потоки на базе
класса CWinApp или непосредственно класса CWinThread.
Объект класса CWinThread обычно существует в течение всего времени
существования потока, однако такой способ функционирования можно изме-
нить, присвоив переменной-члену m_bAutoDelete значение FALSE.
Потоки создаются с помощью функции AfxBeqinThread. Для создания ин-
терфейсного потока функции AfxBeqinThread следует передать указатель на
класс CRuntimeClass объекта, производного от класса CWinThread.
В случае рабочих потоков функция AfxBeqinThread() вызывается с указанием
управляющей функции и параметра, передаваемого последней.
Как для рабочих, так и для интерфейсных потоков можно указать допол-
нительные параметры, изменяющие приоритет, размер стека, флаги создания и
атрибуты безопасности потока. Функция AfxBeqinThread() возвращает указа-
тель на новый объект класса CWinThread.
В качестве альтернативного варианта можно определить, а затем создать
объект, производный от класса CWinThread, вызвав функцию CreateThread()
данного класса. В этом случае производный объект может многократно исполь-
зоваться при последовательных созданиях и уничтожениях потока.
36
Страницы
- « первая
- ‹ предыдущая
- …
- 34
- 35
- 36
- 37
- 38
- …
- следующая ›
- последняя »
