AfxBeginThread
Эта функция вызывается для создания нового потока.
CWinThread* AfxBeginThread(
AFX_THREADPROC pfnThreadProc,
LPVOID pParam,
int nPriority = THREAD_PRIORITY_NORMAL,
UINT nStackSize = 0,
DWORD dwCreateFlags = 0,
LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL
);
CWinThread* AfxBeginThread(
CRuntimeClass* pThreadClass,
int nPriority = THREAD_PRIORITY_NORMAL,
UINT nStackSize = 0,
DWORD dwCreateFlags = 0,
LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL
);
Параметры
pfnThreadProc
Указывает на функцию управления для рабочего процесса. Не может иметь значение NULL. Эту функцию необходимо объявить следующим образом:UINT __cdecl MyControllingFunction( LPVOID pParam );
pThreadClass
RUNTIME_CLASS объекта, производного от CWinThread.pParam
Параметр, передаваемый в функцию управления, как показано в параметре к объявлению функции в pfnThreadProc.nPriority
Желаемый приоритет потока. Полный список и описание имеющихся приоритетов см. в разделе SetThreadPriority в Windows SDK.nStackSize
Задает размер стека для нового потока в байтах. Если он равен 0, по умолчанию используется тот же размер стека, что и для создающего потока.dwCreateFlags
Задает дополнительный флажок, контролирующий создание потока. Этот флаг может содержать одно из 2 значений:CREATE_SUSPENDED Запускает поток со счетчиком приостановок, равным 1. Используйте CREATE_SUSPENDED, если требуется инициализировать данные члена объекта CWinThread, например m_bAutoDelete, или любого члена производного класса до запуска потока. По окончании инициализации используйте CWinThread::ResumeThread для запуска потока. Поток не выполняется, пока не будет вызван метод CWinThread::ResumeThread.
0 Запускает поток сразу же после создания.
lpSecurityAttrs
УКазывает на структуру SECURITY_ATTRIBUTES, которая определяет атрибуты безопасности для потока. Если используется NULL, будут использоваться те же атрибуты безопасности, что и для создания потока. Дополнительные сведения об этой структуре см. в разделе Windows SDK.
Возвращаемое значение
Указатель на вновь созданный объект потока, или NULL, если происходит сбой.
Заметки
Первая форма AfxBeginThread создает рабочий поток. Вторая форма создает поток, который можно использовать как поток интерфейса пользователя или рабочий поток.
AfxBeginThread создает новый объект CWinThread, вызывает его функции CreateThread для запуска выполнения потока и возвращает указатель на поток. Для подтверждения того, что в случае возникновения ошибки освобождение выделяемой для всех объектов памяти осуществляется должным образом, во время создания выполняются специальные проверки. Чтобы завершить поток, вызовите AfxEndThread из потока или возврата из функции управления рабочего процесса.
Многопоточность должна быть включена приложением; в противном случае эта функция завершится ошибкой. Дополнительные сведения о включении многопоточности см. в разделе /MD, /MT, /LD (использование библиотеки времени выполнения) в Параметры компилятора Visual C++.
Дополнительные сведения о AfxBeginThread см. в статьях Многопоточность. Создание рабочих потоков и Многопоточность. Создание потоков пользовательского интерфейса.
Пример
См. пример для CSocket::Attach.
Требования
Заголовок: afxwin.h