WEB开发网
开发学院软件开发VC 多线程编程之二——MFC中的多线程开发 阅读

多线程编程之二——MFC中的多线程开发

 2007-03-17 22:00:08 来源:WEB开发网   
核心提示:本文示例源代码或素材下载 五、MFC对多线程编程的支持MFC中有两类线程,分别称之为工作者线程和用户界面线程,多线程编程之二——MFC中的多线程开发,二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环,或是指向一个结构的指针,甚至可以被忽略;nPriority:线程的优先级,工作

本文示例源代码或素材下载

五、MFC对多线程编程的支持

MFC中有两类线程,分别称之为工作者线程和用户界面线程。二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环。

工作者线程没有消息机制,通常用来执行后台计算和维护任务,如冗长的计算过程,打印机的后台打印等。用户界面线程一般用于处理独立于其他线程执行之外的用户输入,响应用户及系统所产生的事件和消息等。但对于Win32的API编程而言,这两种线程是没有区别的,它们都只需线程的启动地址即可启动线程来执行任务。

在MFC中,一般用全局函数AfxBeginThread()来创建并初始化一个线程的运行,该函数有两种重载形式,分别用于创建工作者线程和用户界面线程。两种重载函数原型和参数分别说明如下:

(1) CWinThread* AfxBeginThread(AFX_THREADPROC pfnThreadProc,
           LPVOID pParam,
           nPriority=THREAD_PRIORITY_NORMAL,
           UINT nStackSize=0,
           DWORD dwCreateFlags=0,
           LPSECURITY_ATTRIBUTES lpSecurityAttrs=NULL);
PfnThreadProc:指向工作者线程的执行函数的指针,线程函数原型必须声明如下:UINT ExecutingFunction(LPVOID pParam);请注意,ExecutingFunction()应返回一个UINT类型的值,用以指明该函数结束的原因。一般情况下,返回0表明执行成功。

pParam:传递给线程函数的一个32位参数,执行函数将用某种方式解释该值。它可以是数值,或是指向一个结构的指针,甚至可以被忽略;

nPriority:线程的优先级。如果为0,则线程与其父线程具有相同的优先级;

1 2 3 4 5 6  下一页

Tags:线程 编程 MFC

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接