MFC的多线程函数AfxBeginThread包含了两种版本,一种是工作者线程,一种是用户界面线程。本文主要讲解的是工作者线程的用法和提供一个实例。如果需要用户界面的用法,可以参考这篇文章http://www.cnblogs.com/lidabo/p/3489639.html。
一、工作者线程AfxBeginThread用法
1.1首先比较工作者线程函数和用户界面线程函数的异同
1.1.1工作者线程AfxBeginThread原型:(必看)
CWinThread* AFXAPI AfxBeginThread(
AFX_THREADPROC pfnThreadProc,
LPVOID pParam,
int nPriority,
UINT nStackSize,
DWORD dwCreateFlags,
LPSECURITY_ATTRIBUTES lpSecurityAttrs)
各个参数功能详解如下:
参数1:线程的入口函数,返回值一定为UINT,函数参数为:LPVOID,例如: UINT MyThreadFunction( LPVOID pParam );
参数2 :传递入线程的参数,注意它的类型为:LPVOID,所以我们可以传递一个结构体入线程.
参数3:指定线程优先级,如果为0,则与创建该线程的线程相同;
参数4:指定线程的堆栈大小,如果为0,则与创建该线程的线程相同;
参数5:创建标识,如果是CREATE_SUSPENDED,则在悬挂状态创建线程,在线程创建后线程挂起,否则线程在创建后开始线程的执行。
参数6:表示线程的安全属性,NT下有用。
1.1.2用户界面线程AfxBeginThread原型:(可以不看)
CWinThread* AFXAPI AfxBeginThread(
CRuntimeClass* pThreadClass,
intnPriority,
UINTnStackSize,
DWORDdwCreateFlags,
LPSECURITY_ATTRIBUTES lpSecurityAttrs)
各个参数功能详解如下:
参数1:是从CWinThread派生的RUNTIME_CLASS类;
参数2:指定线程优先级,如果为0,则与创建该线程的线程相同;
参数3:指定线程的堆栈大小,如果为0,则与创建该线程的线程相同;
参数4:是一个创建标识&