软件工具与环境.pptx

  1. 1、本文档共38页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
软件工具与环境;一、Windows程序的生与死;1、程序初始化过程中调用CreateWindow,为程序建立了一个窗口,作为程序的屏幕舞台。CreateWindow产生窗口之后会送出WM_CREATE直接给窗口函数,后者于是可以在此时做些初始化操作(例如配置内存、打开文件、读初始数据等。;2、在程序活着的过程中,不断以GetMessage从消息队列中获取消息。如果这个消息是WM_QUIT,GetMessage会返回0而结束while循环,进而结束整个程序。;4、程序不断进行上述2和3的操作。;7、程序对MW_DESTROY的标准反应是调用PostQuitMessage。;二、空闲时间的处理;2、空闲时间的处理; 原因是PeekMessage和GetMessage的性质不同:它们都是从消息队列中获取消息,如果没有消息,程序的主执行线程(primary thread,是一个UI执行线程)会被操作系统挂起。当操作系统再次回来照顾这一执行线程时,发现消息队列中仍然是空的,这时两个函数的行为就不同了:;(1)GetMessage会过门不入,于是操作系统再去照顾其它程序。;三、 Windows的多任务;2、Windows9X的抢先式多任务;3、多线程多任务;四、进程与线程; 线程是Windows9X/NT系统调度分配CPU时间的基本单位。进程至少有一个线程,也可以另外增加线程。系统为每个线程分配一个CPU时间片(约20ms),系统不停地在各个线程之间切换。线程只有在分配的时间片内才有对CPU的控制权;1、核心对象; 这些核心对象的产生方式(使用的API)不同,但都会获得一个handle作为识别;每被使用一次,其对应的计数值就增1。;2、进程的产生和死亡;(1)shell调用CreateProcess激活app.exe;(5)系统为此进程建立一个线程,称为主线程(primary thread)。线程才是CPU时间的分配对象。;(9)操作者关闭app主窗口,使WinMain中的消息循环结束,于是WinMain结束。; 因此通过这种方式执行的所有Windows程序,都是shell的子进程。但shell在调用CreateProcess时已经剪断了父进程与子进程之间的关系,而使它们成为独立个体。; 如果一个进程要结束自己,只要调用:; 前面曾提过剪断父子进程关系的概念,只要我们在父进程结束前,把它所开启的核心对象(如子进程、线程对象等)用CloseHandle关闭,就可以实现此目的,操作系统会自动把对象的计数值减1,表示与此核心对象不再有任何关系(图5)。如果计数值为0,对象会自动被操作系统摧毁。;3、一个线程的产生与死亡;(2)设定计数值为1。; 当完成工作后,应该调用CloseHandle释放核心对象(图7)。(例4);线程的结束有两种情况:; 在下面的程序中将CloseHandle函数与GetExitCodeThread函数的关系作了调整:CloseHandle的调用操作被移到了GetExitCodeThread的前面,目的是使GetExitCodeThread的调用失败(例7)。;前面使用了两种等待方法。; 这种方法对系统效率会造成冲击。因此,绝对不要在Win32中使用这种循环的方法。(例8);(2)非正常结束;(1)工作者线程(Worker Threads);五、MFC多线程程序设计; 用户界面线程不能只用一个线程函数来代表,因为它要处理消息循环。CWinThread::Run()成员函数中就有一个消息循环。所以应该先从CWinThread类中派生一个自己的类,再调用全局函数AfxBeginThread产生一个CWinThread类的对象:(图12);3、线程的结束; 放置消息WM_QUIT的方式和一般的Win32程序一样,调用PostQuitMessage即可办到;或者在线程的任何一个函数中调用AfxEndThread,也可以结束线程。;1、有时候读书是一种巧妙地避开思考的方法。7月-207月-20Friday, July 31, 2020 2、阅读一切好书如同和过去最杰出的人谈话。07:59:1507:59:1507:597/31/2020 7:59:15 AM 3、越是没有本领的就越加自命不凡。7月-2007:59:1507:59Jul-2031-Jul-20 4、越是无能的人,越喜欢挑剔别人的错儿。07:59:1507:59:1507:59Friday, July 31, 2020 5、知人者智,自知者明。胜人者有力,自胜者强。7月-207月-2007:59:1507:59:15

文档评论(0)

ayangjiayu3 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档