程序、进程和线程

程序、进程和线程

ID:41541555

大小:48.20 KB

页数:7页

时间:2019-08-27

程序、进程和线程_第1页
程序、进程和线程_第2页
程序、进程和线程_第3页
程序、进程和线程_第4页
程序、进程和线程_第5页
资源描述:

《程序、进程和线程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、本草重难点解析一、程序、进程和线程二、在VC++环境中使用同步对象一、程序、进程和线程(一)进程与线程进程是装入内存中即将执行的程序,可以包含一个或多个运行在它的上下文坏境内的线程。在操作系统技术中,进程利线#出现捉高了系统的并行性,从而使应用程序更冇效地利用系统资源,多线程的应用程序也就应运而生了。在Win32(95/98/NT)中,每一个进程可以同时执行多个线程,这意味着一个程序可以同时完成多个任务。当进程使用多彳程时,需要采取适当的措施来保持线程间的同步。在许多时候,需要使用多线程,例如在与用户交互的同时进行后台计算的处£通信。在Win95/98/NT系统中,一个程

2、序的朋溃一般不会造成死机,其他程序仍然可以运行,用户可以通过按Ctrl+Alt+Del毬打开任务列表并关闭没冇响应的程序而不影响其他正在运行的应用程序。这是多线程的作用。多任务是指系统可以同吋运行多个进程,而每个进程也可以同吋执行多个线程。一个程序可以同吋运行多个线程,每个线不立地执行程序代码屮的一组语句。进程就是应用程序的实例。每个进程都有自己私有的虚拟地址空间。每个进程都有一个主线:但可以建立另外的线程,进程中的线程是并行执行的,每个线程占用CPU的吋间由系统來划分。线程是Win95/98/NT系统调度的基木单位,系统启动时,一个进程至少冇一个线程,进程可以通过调用运

3、行库函数或Win32函数来增加线程。线程可以看成是操作系统分配CPU时间的基本实体,系统不停地在各个线程之间进行切换。(二)线程的种类线程分为用户界面线程和工作者线程两种。用户界而线程拥有自己的消息循环来处理界而消息,可以与用户进行交互。一个用户线程由CWinThread类派生开始,通彳要重载InitlnstanceO及Exitinstance()來完成线程的初始化和清除。在一个应用程序中,运行主线程通常由CWinApp生类提供,CWinApp由CWinThread派生,它是—•个用户界面线程。工作者线程没有自身的消息循环,一般用来完成后台工作。工作者线程可以完成后台计算

4、、打印以及串行通讯等任务,它E点是当需耍一些耗时的操作时,可以使其在后台运行;同时主线程方便地接受用户的输入信息而不必等到这些操作完成。(三)MFC中的线程CWinThread类的对彖代农在一个应用程序内运行的线程。CWinThread支持两种线程类型:工作者线程和用户界而线程。作者线程没有收发消息的功能,用户界面线程具有收发消息的功能,并处理从系统收到的消息。CWinApp及其派生类是用户芋线程的例子。CWinThread类的对象存在于线程的生存期。因为需要依赖CWinThread来处理线程局部数据,所以任何使用MEC的线程4由MFC创建。创建线程的方法:①调用AfxB

5、eginThread函数:根据需耍不管是工作线程还是用户界面线程,冇两种调用AfxBeginThread的格式。如果需耍用户界面线程,则将指向CWinThread派生类的CRuntimeClass的指针传递给AfxBeginThread。如果需要创建工作者线程,则将指向控制函数的指针才制两数的参数传递给AfxBeginThreado对于工作者线程和用户界面线程,可以指定可选的参数來修改优先级,堆栈大小,创建标志和安全属性。AfxBeginThreac程将返回指向新的CWinThread对象的指针。AfxBeginThread函数的声明:CWinThread*AfxBegi

6、nThread(AFXTHREADPROCpfnThreadProc,I.PVOTDpParam,intnPriority=THREADPRTORTTYNORMAL,UIN'nStackSize=O,DWORDdwCreateFlags=O,LPSECUR1TY_ATTR1BUTESlPSecurityAttrs=NULL);①先构造一个CWinThread派生类的对彖,然后调用CreateThread,(四)线程的创建、启动和终止1、线程的创建①创建一个工作者线程需要两步:首先完成控制函数的编写;然后用函数AfxBeginThread来启动线程。例如://控制两数的实现

7、UINTMyThread(LPVOIDpParam){CMyObject*pObject=(CMyObject*)pParam;if(pObject==NULL

8、

9、!pObject->IsKindOf(RUNTIMECLASS(CMyObject)))returnT;AfxEndThread(2);添加特定代码。。。//用pObject对象來完成某项工作Return0;//主线程屮的线程控制调用pNewObject=newCMyObject;AfxBeginThread(MyThread,pNewObject);②创建用户界面

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

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

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