- 1、本文档共73页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C++Builder 6 程序设计教程 第十一章 C++Builder 高级应用 11.1 多线程应用程序 11.1.1 进程与线程 进程:可并发的程序在一数据集合上的运行过程,是操作系统进行资源分配和调度的一个独立单位。进程是由私有的虚拟地址空间、代码、数据和其他各种系统资源组成的。 线程:进程中的一个实体,是被系统独立调度和分派的基本单位 线程的分类: 用户界面线程:通常用来处理用户的输入并响应各种事件和消息 工作线程(又称为后台线程):来执行程序的后台处理任务,比如计算、调度和对设备的读写操作等 进程和线程示例 11.1.2 利用Win32 API编写多线程应用程序 利用Win32 API来编写多线程应用程序的一般步骤如下: (1) 编写一个线程的执行函数 (2) 创建并执行线程 (3) 控制线程的运行(挂起或唤醒线程) (4) 结束线程 创建线程的执行函数 所有线程必须从一个指定的函数开始执行,该函数称为线程函数,它必须具有下列原型: DWORD WINAPI ThreadFunc( LPVOID lpThreadParm); 参数lpThreadParm可以是一个DWORD型的整数,也可以是一个指向一个缓冲区的指针,返回一个DWORD型的值 创建线程 一个进程的主线程是在进程创建时由操作系统自动生成,如果要让一个主线程创建它的辅助线程,可以调用CreateThread来完成。原型如下: HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, //线程的安全属性 DWORD dwStackSize, //初始化线程栈的大小 LPTHREAD_START_ROUTINE lpStartAddress, //指向线程函数地址的指针 LPVOID lpParameter, //新线程的参数 DWORD dwCreationFlags, //创建的标志 LPDWORD lpThreadId //返回线程的标识符指针 ); 参数意义 lpThreadAttributes:是一个指向SECURITY_ATTRIBUTES结构的指针。如果想让对象为缺省安全属性的话,可以传一个NULL;如果想让任一个子进程都可继承该线程对象句柄,必须指定一个SECURITY _ATTRIBUTES结构,其中bInheritHandle成员初始化为TRUE dwStackSize:是线程为自己所用堆栈分配的地址空间大小,0表示采用系统缺省值 lpStartAddress:是新线程开始执行时代码所在函数的地址,即为线程函数 lpParameter:是传给线程函数的参数 dwCreationFlags:是指定控制线程创建的附加标志,可以取两种值。如果该参数为0,线程就会立即开始执行;如果该参数为CREATE_SUSPENDED,则系统创建线程后,并不马上执行,而是挂起该线程,直到调用ResumeThread函数 lpThreadId:是一个DWORD类型地址,返回该新线程的ID值 函数调用成功,返回值为新线程的句柄,否则为NULL 终止线程 (1)在线程内调用ExitThread函数,就可以终止自身。原型: VOID ExitThread( DWORD dwExitCode // 线程的退出代码 ); 该函数为调用它的线程设置了退出码dwExitCode后,就终止并清除该线程使用的系统资源 (2)在线程外通过调用TerminateThread函数强行终止一个线程。原型: BOOL TerminateThread( HANDLE hThread, // 线程的句柄 DWORD dwExitCode // 线程的退出代码 ); 该函数用来结束由hThread参数指定的线程,并把dwExitCode设成该线程的退出码 设定线程的相对优先级 当一个线程被首次创建时,它的优先级等同于它所属进程的优先级。在单个进程内可以通过调用SetThreadPriority函数改变线程的相对优先级。一个线程的优先级是相对于其所属的进程优先级而言的。 BOOL SetThreadPriority( HANDLE hThread, //线程的句柄 int nPriority // 线程优先级 ); 其中参数hThread是指向
您可能关注的文档
- 3ds Max 动画制作基础 陈超 模块三新.ppt
- 3G基站建设与维护 姚伟 6 项目六新.ppt
- 51系列单片机项目实践 石长华 主编 课件汇总 第11章 单片机与AD接口新.ppt
- 80X86 汇编语言程序设计 廖智 主编 汇编语言第1章新.ppt
- Access_2003数据库案例教程 姚茂群 项目六 窗体设计新.ppt
- Aoto CAD 2010 应用教程 蔡伟美 课题6新.ppt
- AT mega系列单片机原理及应用--C语言教程 海涛 第3章 ATmega 单片机的指令系统新.ppt
- AutoCAD 2010中文版建筑制图教程 曹磊 2 第2章 AutoCAD2010入门基础新.ppt
- AutoCAD二次开发实用教程 郭秀娟 第6章 实体和设备访问函数新.ppt
- AutoCAD设计与实训 白剑宇 第3章 图案填充与尺寸标注新.ppt
- C++程序设计 郑莉 第10章_类的重用新.ppt
- C++程序设计与应用 周仲宁 2 courseware14新.ppt
- C++面向对象程序设计 张德慧 周元哲 主编 第1章 C++ 概述新.ppt
- C++面向对象程序设计 张德慧 周元哲 主编 第2章 类和对象新.ppt
- C++面向对象程序设计 张德慧 周元哲 主编 第3章 面向对象程序设计概述新.ppt
- C++面向对象程序设计 张德慧 周元哲 主编 第12章 异常处理新.ppt
- C++语言程序设计 尹季昆 主编 第二章 类和对象新.ppt
- C++语言程序设计 尹季昆 主编 第六章 C++的流类库新.ppt
- C++语言程序设计 尹季昆 主编 第五章 模板新.ppt
- CATIA V5R20机械设计教程 高校本科教材 詹友刚 第05章 工程图设计新.ppt
最近下载
- HERO9Black狗9中文说明书.pdf VIP
- 中医养生馆策划方案.pptx
- 山东省济南育英教育集团2024-2025学年下学期七年级期中数学试题[含答案].pdf VIP
- ISO 898-2-2022-中文紧固件—碳钢和合金钢制紧固件的机械.pdf
- 高速铁路概论:高速铁路通信系统PPT教学课件.pptx VIP
- 自动化立体仓库堆垛机控制系统的设计稿毕业设计稿.doc VIP
- 浅谈高速铁路通信系统与其它专业接口管理工作.pdf VIP
- 放射科图像质量控制标准(5篇).docx VIP
- 银行重要信息系统投产及变更管理办法模版.docx VIP
- NB∕T 32043-2018 光伏发电工程可行性研究报告编制规程.pdf VIP
文档评论(0)