用MFC库函数AfxBeginThread来操作线程

用MFC库函数AfxBeginThread来操作线程

ID:38796472

大小:15.74 KB

页数:3页

时间:2019-06-19

用MFC库函数AfxBeginThread来操作线程_第1页
用MFC库函数AfxBeginThread来操作线程_第2页
用MFC库函数AfxBeginThread来操作线程_第3页
资源描述:

《用MFC库函数AfxBeginThread来操作线程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、用MFC库函数AfxBeginThread来操作线程(比较推荐使用该方式在MFC下开发)有关创建线程的问题有三种方法:1.C语言函数,调用_beginthread();2.API函数,调用CreateThread();3.MFC函数,调用AfxBeginThread();推荐使用MFC函数AfxBeginThread();利用MFC里的AfxBeginThread函数能很方便地创建线程以及对线程进行等待、唤醒等操作。1、函数原型CWinThread*AfxBeginThread(AFX_THREADPROCpfnThreadProc,

2、LPVOIDpParam,intnPriority=THREAD_PRIORITY_NORMAL,UINTnStackSize=0,DWORDdwCreateFlags=0,LPSECURITY_ATTRIBUTESlpSecurityAttrs=NULL);2、参数说明(1)返回值:一个指向新线程的线程对象。(2)pfnThreadProc:线程的入口函数,声明一定要如下:UINTMyThreadFunction(LPVOIDpParam);(3)pParam:传递入线程的参数,注意它的类型为:LPVOID,所以我们可以传递一个结构

3、体入线程。(4)nPriority:线程的优先级,一般设置为0。让它和主线程具有共同的优先级。(5)nStackSize:指定新创建的线程的栈的大小。如果为0,新创建的线程具有和主线程一样的大小的栈。(6)dwCreateFlags:指定创建线程以后,线程有怎么样的标志。可以指定两个值:         <1>CREATE_SUSPENDED:线程创建以后,会处于挂起状态,直到调用ResumeThread;         <2>0:创建线程后就开始运行。(7)lpSecurityAttrs:指向一个SECURITY_ATTRIBUT

4、ES的结构体,用它来标志新创建线程的安全性。如果为NULL,那么新创建的线程就具有和主线程一样的安全性。3、线程创建一般创建过程如下:先定义一个工作函数,一般来说你的线程就是依照该函数的功能执行任务:UINTMyThreadFunction(LPVOIDpParam){     //函数体     return0;}然后可以按以下方式创建线程:CWinThread*MyThread=AfxBeginThread(MyThreadFunction,pParam,THREAD_PRIORITY_NORMAL,0,0,NULL);4、线程的

5、等待与唤醒(1)让线程等待(暂时挂起):MyThread->SuspendThread();(2)唤醒暂停的线程:MyThread->ResumeThread();5、查看线程状态:DWORDcode;GetExitCodeThread(MyThread->m_hThread,&code);if(code==STILL_ACTIVE){//线程仍在执行}else{//线程停止执行}6、结束线程  TerminateThread(MyThread->m_hThread,0);                          有关创建线

6、程的问题有三种方法:1.C语言函数,调用_beginthread();2.API函数,调用CreateThread();3.MFC函数,调用AfxBeginThread();推荐使用MFC函数AfxBeginThread();在进行多线程程序设计的时候,我们经常用到AfxBeginThread函数来启动一条线程该函数使用起来非常的简单方便,其定义如下CWinThread*AfxBeginThread(   AFX_THREADPROCpfnThreadProc,//线程函数地址   LPVOIDpParam,//线程参数   intn

7、Priority=THREAD_PRIORITY_NORMAL,//线程优先级   UINTnStackSize=0,//线程堆栈大小,默认为1M   DWORDdwCreateFlags=0,//   LPSECURITY_ATTRIBUTESlpSecurityAttrs=NULL);CWinThread*AfxBeginThread(   CRuntimeClass*pThreadClass,   intnPriority=THREAD_PRIORITY_NORMAL,   UINTnStackSize=0,   DWORDdw

8、CreateFlags=0,   LPSECURITY_ATTRIBUTESlpSecurityAttrs=NULL);参数说明:pfnThreadProc:线程函数的地址,该参数不能设置为NULL,线程函数必须定义成全

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。