- 1、本文档共34页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
mt线程的创建和运行.ppt
线程的创建和运行 第三章 线程的创建和运行 3.1 基本概念 3.2 线程的创建 3.3 终止线程 3.4 线程的暂停与回复 3.5 在类中使用线程 3.1 基本概念 Windows进程 进程的四种入口函数 intWINAPI WindMain() | WinMainCRTStartup ¨ intWINAPI wWinMain() | wWindMainCRTStartup ¨ int__cdeclmain() | mainCRTStartup ¨ int__cdeclwMain() | wmainCRTStartup 操作系统不直接调用入口函数, 而是调用c/c++运行库的启动函数 操作系统启动进程 检索指向新进程的完整命令行的指针 检索指向新进程的环境变量的指针 对C/C++运行期的全局变量初始化 对C 运行期内存单元分配函数(malloc和calloc)和其他的底层输出输入例程使用的内存堆进行初始化 为所有全局和静态的C++对象调用构造函数 线程的构成 线程的内核对象,操作系统用它来对线程实施管理 线程堆栈,用于维护线程在执行代码时候需要的所有函数局部变量。 线程上下文(一组CPU寄存器状态,特别是指令指针寄存器和堆栈指针寄存器) 指令寄存器和堆栈寄存器记录的地址都用于标志拥有线程的进程地址空间中的内存 线程和进程 进程比线程使用更多的系统资源,原因是它需要更多的地址空间。为进程创建一个虚拟地址空间,需要很多系统资源,同时,系统中要保留大量的记录,这也要占用大量的内存。 另外,dll或者exe需要加载到一个地址空间,也需要文件资源。 线程只需要一个内核对象和一个堆栈,保留的记录很少,因此需要很少的内存?? Windows中进程是不活泼的,进程从来不执行任何东西,进程只是线程的容器?? 应该用增加线程来解决编程问题,避免创建新的进程。 Windows线程的调度 抢占式操作系统必须使用某种算法来确定哪些线程应该在何时调度和运行多长时间 Windows被称为抢占式多线程操作系统,因为一个线程可以随时停止运行,然后另外一个线程进行调度。 基于任务优先级的抢占式调度算法,同一优先级的任务遵循时间片轮转,并且遵循FIFO策略。 每隔20ms左右,windows要查看当前所有的线程内核对象,在这些内核对象中,只有某些对象被视为可以调度的对象,Windows选择可调度线程内核对象中的一个,将他加载到CPU寄存器中,然后继续运行,当系统引导时,便可以加载CPU寄存器中的线程上下文,使线程运行。 系统只调度可以调度的线程。实际情况是很多线程是不可调度的线程,比如一个暂停运行的线程(可以在创建线程的时候,直接指定这个线程是暂停的。)比如一个正在等待某些事情发生的线程。 CPU不给无事可作的线程分配CPU时间。 Windows线程的优先级 每个线程都会被赋予一个从0-31的优先级号码 只要是高优先级的线程是可以调度的,系统绝对不会调度低优先级的(Starvation) 系统引导的时候创建特殊的线程——0页线程,其优先级为0,当系统中没有任何其他线程运行时,0页线程负责将系统中所有的空闲RAM页面置0 进程内使用线程相对的优先级:空闲、最低、低于正常、正常、高于正常、最高、关键时间 进程也根据具体情况被分为5个进程优先级类:空闲、低于正常、正常、高于正常、实时 线程的实际优先级是进程优先级类和进程内线程相对优先级的组合 正常优先级类的进程的基本优先级是5, 进程内正常优先级线程的优先级是8,所以一个正常进程中的正常优先级线程的真正优先级是13 3.2 线程的创建 何时创建一个进程的主线程 线程用于描述进程中的运行路径。每当进程被初始化,系统就要创建一个主线程。该线程和C/C++运行库的启动代码一道开始运行,启动代码则调用进入点函数。并且继续运行直到进入点函数返回并且C/C++运行库的启动代码调用ExitProcess为止 线程进入点函数 每个线程必须有一个进入点函数,线程从这个进入点开始运行。 一个进程的主线程的进入点函数 main, wmain, WinMain, wWinMain 一个辅助线程的进入点函数:例如 DWORD WINAPI ThreadFunc(LPVOID pvParam) { DWORD dwResult= 0; ….. return dwResult. } CreateThread函数 在一个已经运行的线程中创建辅助线程 HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, // 安全性,缺省NULL SIZE_T dwStackSize, // initial
您可能关注的文档
- MAYAAO贴图烘焙(DOC可编).doc
- MAYAAO贴图烘焙2(DOC可编).doc
- maya制作烘焙法线贴图(DOC可编).doc
- MAYA可口可乐瓶模型贴图制作(DOC可编).doc
- Maya实现透明贴图的方法详解(DOC可编).doc
- Maya建模_制作玫瑰花(DOC可编).doc
- maya截屏备注的很简单骨骼绑定(DOC可编).doc
- Maya教程磨损做旧效果的实现GI烘焙贴图(DOC可编).doc
- maya教程:鱼的模型建立及彩虹贴图(DOC可编).doc
- maya材质与贴图—制作三维立体(DOC可编).doc
- 1.1细胞是生命活动的基本单位课件-2024-2025学年高一上学期生物人教版必修1.pptx
- 1.2细胞的多样性和统一性第1课时课件-2024-2025学年高一上学期生物人教版必修1.pptx
- 第16课《白杨礼赞》课件-2025-2026学年统编版语文八年级上册.pptx
- 2026届高三生物一轮复习课件+减数分裂与生物的遗传、变异.pptx
- 3.1细胞膜的结构和功能第2课时课件-2025-2026学年高一上学期生物人教版必修1.pptx
- 2025届高三生物一轮复习课件2.1减数分裂和受精作用.ppt
- 中考语文二轮专题复习课件:新闻概括题.pptx
- 第6课《我看》课件+++2025-2026学年统编版语文九年级上册.pptx
- 第21课《人民英雄永存不朽》课件-2025-2026学年统编版语文八年级上册.pptx
- 2025年广西河池罗城特聘农机技术指导员的(1人)考前自测高频考点模拟试题含答案详解(b卷).docx
最近下载
- 神经内科三基考试题及答案.doc VIP
- 等离子体物理与当代高新技术(本科生).ppt VIP
- SMTC 2 800 003 LIN节点设计需求LIN node design requirements(20180730).pdf
- 医院医院安保服务及停车场运营管理服务招标文件.pdf
- (最新)社区网格员考试试题(含答案).docx VIP
- 老小区燃气管道改造监理实施细则.docx VIP
- 中国行业标准 YY/T 1831-2021梅毒螺旋体抗体检测试剂盒(免疫层析法).pdf
- Walkera华科尔无人机FCS-F8使用指南_CN_V1.2_2020.10.12(金属壳版).pdf
- 五升六数学暑假作业60天附答案.docx VIP
- 高中物理:强基计划专题讲座.pptx VIP
文档评论(0)