- 1、本文档共44页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
05-多进程多线程
多线程编程技术第五讲:清华大学计算机系主要内容 多任务介绍 进程与线程的概念 Qt 多进程编程 Qt 多线程编程 多线程的同步机制并行:古老的思想!“... 并行计算并不是什么新的思想,只是将它扩展应用于计算机而已. 作者也不认为这种扩展应用会存在什么无法克服的困难. 但也不要期待有效的并行编程方法与技术能够在一夜之间诞生. 期间还需要有许多的工作和实验要做. 毕竟, 今天的编程技术(串行)是若干年来艰苦的探索才取得的. 现在编程工作似乎成了一种令人单调乏味的工作,事实上,并行编程的出现将会使重新恢复编程工作者们的探索精神 ...” (Gill, S. (1958), “Parallel Programming,” The Computer Journal, vol. 1, April, pp. 2-10.)Parallel Programming with MPIby Peter Pacheco(2000)1、什么是多任务并行 什么是多任务,生活中很常见 妈妈:一边织毛衣,一边看电视 售货员:招呼多个顾客看货、购物 同学们:同时应付多门课的作业 计算机为什么需要支持多任务? 大型机器:需要同时服务多位用户 个人机器:同时有多个需求:听歌、上网 计算机为什么能支持多任务 CPU资源大量富余 memory/disk等设备速度很慢 运行单个任务,会经常有大量资源闲置多任务的交互——竞争与协作竞争关系多个任务共用一套资源,因而出现多个任务竞争资源的情况。任务的互斥(Mutual Exclusion)是解决进程间竞争关系的手段协作关系多个子任务为完成同一任务需要分工协作,一个子任务的继续执行依赖于另一个子任务的执行状态任务的同步(Synchronization)是解决任务间协作关系的手段。主要内容 多任务介绍 进程与线程的概念 Qt 多进程编程 Qt 多线程编程 多线程的同步机制2、基本概念:程序程序通常是指一个可供计算机执行的文件。最常见的是以exe或者com作为扩展名的文件。2、基本概念:进程程序是静态的概念,进程是程序的动态概念。进程是应用程序的执行实例,描述程序的执行状态。一个以exe作为扩展名的文件,在没有被执行的时候称之为应用程序。当用鼠标双击执行以后,就被操作系统作为进程来管理了。当关机或者在任务栏的图标上单击鼠标右键选“退出”时,进程便消亡,彻底结束了生命。2、Windows任务管理器—进程进程的并发性宏观上,所有进程都是并发运行的。微观上,除非是多处理器,否则不可能有两个进程在同时运行。具体方法是时间片轮转:一个进程运行一个时间片,就把CPU让出来让另一个进程运行。因为时间片很小,所以用户看起来所有进程都在运行。任何两个不相关的进程其推进速度可能是任意的。并发带来的好处很明显的好处:可以让多个用户分享CPU。对单用户而言,也可同时运行多个程序,如一边上网一边QQ。更深层次的好处:充分利用CPU资源。当一个进程在等待数据时(来自网络,外部设备等),其它进程可占用CPU。并发带来的挑战挑战:并不是所有的事情都可以同时做。两个进程同时写一个文件,对于普通文件,文件某一个位置上的内容是最后一次写入的结果。好像还不太糟。但如果这个文件是一台打印机那将会怎么样?可以想像打印出来的东西将不是任何一个进程想得到的。数据的不一致性数据的不一致性例:多个进程通过共享内存实现通信,共享一块物理地址。每个进程都通过 int *p 映射到这块物理地址。进程每次获取一个网页,调用*p=*p+1。最后*p的值就是多个进程获取到的网页总和。数据的不一致性进程1mov eax, [p]inc eaxmov [p], eax进程2mov eax, [p]inc eaxmov [p], eax结果不是我们想要的,*p只被加了1!数据的不一致性因为*p是共享资源,因此对它写操作应该是互斥的。访问文件也是类似。不加同步控制的多进程程序,运行结果是不可预知的。在编写多进程或多线程程序时应当特别注意。引入多线程技术的动机进程切换开销大,频繁的进程调度将耗费大量处理器时间进程间通信代价大,每次通信均要涉及通信进程之间以及通信进程与操作系统之间的切换。进程间的并发粒度较粗,并发度不高。过多的进程切换和通信使得细粒度的并发得不偿失。轻量级进程(Light Weight Process)--线程(Thread)2、基本概念:线程线程是进程的执行单元,一个进程内可以有多个线程进程所具有的动态含义,是通过线程来体现的。2、进程 vs 线程进程是系统中程序执行和资源分配的基本单位每个进程有自己的数据段、代码段和堆栈段“独立地址空间”是指各个进程都有自己的虚拟地址空间(在Linux下为0x0-0xbfffffff),而且任何进程都只能访问到自己的虚拟地址空间。线程通常叫做轻量
文档评论(0)