AfxBeginThread

AfxBeginThread

Visual Studio 2015
其他版本
 

调用此函数以创建新线程。

语法
      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

从 CWinThread 派生的对象的 RUNTIME_CLASS。

pParam

参数传递到控制函数,如 pfnThreadProc 中的参数至函数声明所示。

nPriority

所需的线程优先级。  有关可用优先级的完整列表和说明,请参见 Windows SDK 中的 SetThreadPriority。  

nStackSize

以字节为单位指定新线程的堆栈大小。  如果为 0,堆栈大小默认与创建线程的堆栈大小相同。  

dwCreateFlags

指定一个额外的控制线程创建的标志。  此标志可以包含两个值之一:  

  • CREATE_SUSPENDED   开始挂起计数为 1 的线程。  如果要在线程开始运行之前初始化 CWinThread 对象的任何成员数据,如 m_bAutoDelete 或您的派生类的任何成员,请使用 CREATE_SUSPENDED  完成初始化后,使用CWinThread::ResumeThread 使线程开始运行。  直到调用 CWinThread::ResumeThread,线程才会执行。  

  • 0  创建后立即启动线程。

lpSecurityAttrs

指向安全特性结构,此结构为线程指定安全特性。  如果为 NULL,则将使用与创建线程相同的安全特性。  有关该结构的更多信息,请参见 Windows SDK。  

返回值

如果失败,指针则指向新建的线程对象或 NULL

备注

AfxBeginThread 的第一个窗体创建辅助线程。  第二个窗体创建了一个可用作用户界面线程或辅助线程的线程。  

AfxBeginThread 可创建新的 CWinThread 对象,调用其 CreateThread 函数以开始执行线程,然后将指针返回到线程。  在整个过程中进行检查,确保假如创建过程的任何部分出现故障,所有对象都能被正确地解除分配。  若想关闭线程,请从线程内调用 AfxEndThread,或从辅助线程的控制函数返回。  

应用程序必须启用多线程;否则此函数将失败。  有关启用多线程的更多信息,请参考 Visual C++ 编译器选项下的 /MD、/MT、/LD(使用运行库)。  

有关 AfxBeginThread 的更多信息,请参见文章 多线程:创建辅助线程和多线程:创建用户界面线程。

示例

请参见 CSocket::Attach 的示例。

要求

头文件位置: afxwin.h

请参阅

MFC 宏和全局函数
AfxGetThread


转自:https://msdn.microsoft.com/zh-cn/library/s3w9x78e.aspx

你可能感兴趣的:(AfxBeginThread,VC++)