设为首页 加入收藏

TOP

14.3.1 创建线程
2013-10-07 01:18:07 来源: 作者: 【 】 浏览:67
Tags:14.3.1 创建 线程

14.3  多线程程序设计

MFC中可以方便地创建线程,它把线程分为工作者线程和用户界面线程,本节对多线程的程序设计进行介绍。

14.3.1  创建线程

MFC中,线程分为用户界面线程和工作者线程,其创建的过程有所不同,下面分别进行介绍。

1.用户界面线程的创建

在MFC中,提供了线程的功能的封装类:CWinThread类,在类向导创建的应用程序中所使用的CWinApp类就是从这个类派生出来的。在应用程序中可以使用CWinThread类来派生用户界面线程,然后调用函数启动该线程。编写用户界面线程的步骤如下:

(1)类由类向导派生一个新类,其基类为CWinThread类。

(2)创建并启动线程。可以利用下面两种方法实现创建线程并启动。

利用AfxBeginThread()函数,其函数原型如下:

  1. CWinThread* AfxBeginThread(CRuntimeClass* pThreadClass, int nPriority =   
  2.                                  THREAD_PRIORITY_NORMAL, UINT nStackSize = 0,   
  3.                                  DWORD dwCreateFlags = 0, LPSECURITY_ATTRIBUTES   
  4.                                  lpSecurityAttrs = NULL ); 

参数pThreadClass是指定线程的运行类,函数的返回值为线程对象。

调用线程类的构造函数创建线程对象,利用CWinThread::CreateThread()函数创建该线程。

注意:需要利用构造函数创建对象,构造函数必须是公有的成员函数。

2.工作者线程

工作者线程的创建实际上就是一个函数,只需要提供该函数的地址,即线程的入口就可以了。在工作者线程启动之后就可以进入其函数,并且在函数退出时结束该线程。在MFC中可以利用AfxBeginThread()函数创建工作者线程。函数原型如下:

  1. CWinThread* AfxBeginThread( AFX_THREADPROC pfnThreadProc, LPVOID pParam, int   
  2.                                 nPriority = THREAD_PRIORITY_NORMAL, UINT   
  3.                                 nStackSize = 0, DWORD dwCreateFlags = 0,   
  4.                                 LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL ); 

函数各个参数的意义为:

pfnThreadProc:函数的入口地址。

pParam:传递给线程的参数。

nPriority:表示线程的优先级。

nStackSize:表示栈的大小,为0时表示采用系统值。

dwCreateFlags:创建线程的标记。

lpSecurityAttrs:描述线程的安全属性。

函数的返回值是CWinThread类的指针,可以利用该指针实现对线程的控制。

【责任编辑:云霞 TEL:(010)68476606】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇14.3.2 终止线程 下一篇14.1.2 进程

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: