新Visual C++实用教程 教学课件 周进 朱训林 张宏林 第9章多线程.pptVIP

  • 0
  • 0
  • 约 62页
  • 2015-11-19 发布于广东
  • 举报

新Visual C++实用教程 教学课件 周进 朱训林 张宏林 第9章多线程.ppt

第9章 多 线 程 本章主要介绍Windows操作系统下多线程的基本概念、创建管理线程的方法,以及线程的同步问题。 Windows提供了大量的线程同步技术,这些技术可以应用于不同的实际情况。 同时,MFC对线程操作进行了封装,提供了支持线程操作的类库。 本章主要讨论这些技术,并且给出相应的实例。 本章主要内容如下: ● Windows下多线程的基本概念; ● 用户界面线程和工作者线程; ● 线程的管理操作; ● 线程的同步; ● 多线程编程实例。 9.1 多线程的基本概念 在Win32下,一个应用程序由一个或多个进程组成。 一个进程由一个或多个线程以及代码、数据和其他内存中的程序资源组成。 典型的程序资源包括打开的文件、信号量、动态分配的内存等。 线程在进程空间中执行。 线程是操作系统分配处理器时间的最小单位。 每个线程有自己的堆栈、CPU寄存器、以及程序入口。 每个线程共享所有处理器的资源。 进程中的每个线程都独立执行,不会影响该进程中的其他线程。 所有线程共享公共的资源。 因此必须采用信号量或者其他进程间通信方法来调整线程的工作。 9.2 两种重要的线程 Windows提供了两种线程,即用户界面线程和工作者线程。 用户界面线程通常用来处理消息循环、与用户交互,工作者线程用来处理后台的计算。 下面分别介绍这两种线程。 9.2.1 用户界面线程 每一个Windows应用程序都有一个主线程。 这里的用户界面线程是指用来和用户进行交互的线程。 接收用户传送的数据,并且做出响应。 用户界面线程通常包含自己的窗口,有自己的消息循环,独立于应用程序的其他部分。 创建一个用户界面线程需要首先继承线程类CWinThread,重载它的成员函数,如表9-1所示。 最后调用AfxBeginThread创建线程对象。 9.2.2 工作者线程 工作者线程通常用来处理后台运行的任务。 在后台任务运行的同时,用户可进行其他操作,不必等待后台任务的结束。 例如,一个三维模型编辑软件,用户要对两个模型做布尔运算。 在进行计算的同时,用户希望可以观察两个模型,对模型进行旋转,缩放的操作。 再如文本浏览软件的打印功能,在打印文本的工程中,用户仍然会继续浏览文本内容。 这些都属于工作者线程。 创建一个工作者线程只需要两个步骤。 首先实现工作者线程的功能函数,然后启动线程即可。 可以调用Win32提供的API函数CreateThread创建一个线程,MFC对Win32的线程操作做了封装,也可以通过调用AfxBeginThread创建一个线程对象。 这些函数及其调用方法将在下一节详细介绍。 9.3 线程的操作 本节介绍Windows线程的操作方法,包括线程的创建、线程的管理、线程的同步、线程的终止等。 9.3.1 线程的创建 线程的创建方法有3种,分别介绍如下。 1.调用Win32API函数CreateThread和CreateRemoteThread (1)CreateThread (2)CreateRemoteThread 2.C运行库函数_beginthreadex 3.调用函数AfxBeginThread 9.3.2 线程的终止 1.调用Win32API函数ExitThread 2.Win32API函数TerminateThread 3.C运行库函数 4.函数AfxEndThread 9.3.3 线程的管理和操作 1.线程的挂起、继续和休眠 (1)

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档