Поделиться через


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

См. также

Ссылки

AfxGetThread

Основные понятия

Макросы и глобальные объекты MFC