- 0
- 0
- 约 62页
- 2015-11-19 发布于广东
- 举报
第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)
您可能关注的文档
- 新Visual Basic语言程序设计及实验教程 电子教案 周建丽 第7章 过程.ppt
- 新Visual Basic语言程序设计教程 电子教案 周建丽 Visual Basic语言程序设计教程 教学课件 周建丽 6166.ppt
- 新Visual C# .NET程序设计教程 教学课件 罗福强 白忠建 杨剑 C# Ch1.ppt
- 新Visual C# .NET程序设计教程 教学课件 罗福强 白忠建 杨剑 C# Ch2.ppt
- 新Visual C# .NET程序设计教程 教学课件 罗福强 白忠建 杨剑 C# Ch3.ppt
- 新Visual C# .NET程序设计教程 教学课件 罗福强 白忠建 杨剑 C# Ch4.ppt
- 新Visual C# .NET程序设计教程 教学课件 罗福强 白忠建 杨剑 C# Ch5.ppt
- 新Visual C# .NET程序设计教程 教学课件 罗福强 白忠建 杨剑 C# Ch6.ppt
- 新Visual C# .NET程序设计教程 教学课件 罗福强 白忠建 杨剑 C# Ch7.ppt
- 新Visual C# .NET程序设计教程 教学课件 罗福强 白忠建 杨剑 C# Ch8.ppt
- 新Visual C++实用教程 教学课件 周进 朱训林 张宏林 第10章 多媒体应用程序设计.ppt
- 新Visual C++实用教程 教学课件 周进 朱训林 张宏林 第11章 动态链接库.ppt
- 新Visual C++实用教程 教学课件 周进 朱训林 张宏林 第12章 网络编程.ppt
- 新Visual C++实用教程 教学课件 周进 朱训林 张宏林 第13章 数据库开发.ppt
- 新Visual C++应用教程 教学课件 郑阿奇 丁有和 第1章C++基础1.ppt
- 新Visual C++应用开发与实践 教学课件 刘乃琦_ VC 第1章 对话框程序设计.ppt
- 新Visual C++应用开发与实践 教学课件 刘乃琦_ VC 第2章 文档与视图.ppt
- 新Visual C++应用开发与实践 教学课件 刘乃琦_ VC 第3章 菜单、工具栏和状态栏.ppt
- 新Visual C++应用开发与实践 教学课件 刘乃琦_ VC 第4章 图形设备接口.ppt
- 新Visual C++应用开发与实践 教学课件 刘乃琦_ VC 第5章 多线程.ppt
最近下载
- ntvf调试资料解读.doc VIP
- 电影《色.戒》的叙事伦理.doc VIP
- 上海大学2023-2024学年第1学期《高等数学(上)》期末考试试卷(A卷)附参考答案.pdf
- 佳能EOS1500D基本使用说明书说明书.pdf VIP
- 上海大学2023-2024学年第1学期《高等数学(上)》期末考试试卷(B卷)附参考答案.pdf
- 渣打银行(香港)有限公司.PDF VIP
- 2024年吉林高职高专院校单招统一考试《语文》试卷及参考答案.pdf VIP
- JSG202515机器人系统集成应用技术样题-学生组.docx VIP
- 棋盘博弈采购法战略体系.ppt VIP
- 节后复产复工安全知识考试试卷及答案.docx
原创力文档

文档评论(0)