构造并发程序的三种基本方法和优缺点.pdfVIP

构造并发程序的三种基本方法和优缺点.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
构造并发程序的三种基本⽅法和优缺点 构造并发程序的三种基本⽅法 进程 ⽤这种⽅法,每个逻辑控制流都是⼀个进程,由内核来调度维护.因为进程有独⽴的虚拟地址空间,想要和其 他流通信,控制流必须使⽤某种显式的进程间通信机制. I/O多路复⽤ 在这种形式的并发编程中,应⽤程序在⼀个进程的上下⽂中显式地调度它们⾃⼰的逻辑流.逻辑流被模型 化为状态机,数据到达⽂件描述符后,主程序显式地从⼀个状态转换到另⼀个状态.因为程序是⼀个单独的 进程,所以所有的流都共享同⼀个地址空间. 假设要求编写⼀个echo服务器,它也能对⽤户从标准输⼊键⼊的交互命令做出响应.在这种情况下,服务器 必须响应两个相互独⽴的I/O事件:1)⽹络客户端发起连接请求,2)⽤户在键盘上键⼊命令⾏.我们先等待哪 个事件呢?没有哪个选择是理想的.如果在accept中等待⼀个连接请求,我们就不能响应输⼊的命令.类似的, 如果在read中等待⼀个输⼊命令,我们就不能响应任何连接请求. 针对这种困境的⼀个解决办法就是I/O多路复⽤技术.基本的思路就是使⽤select函数,要求内核挂起进程,只 有⼀个或多个I/O事件发⽣后,才将控制返回给应⽤程序. 线程 线程是运⾏在⼀个单⼀进程上下⽂中的逻辑流,由内核进⾏调度.你可以把线程看成是其他两种⽅式的混 合体,像进程流⼀样由内核进⾏调度,⽽像I/O多路复⽤流⼀样共享同⼀个虚拟地址空间. 在⼀些重要⽅⾯,线程执⾏是不同于进程的.因为⼀个线程的上下⽂要⽐⼀个进程的上下⽂⼩得多,线程的 上下⽂切换要⽐进程的上下⽂切换快得多.另⼀个不同就是线程不像进程那样,不是按照严格的⽗⼦层次 来组织的.和⼀个进程相关的线程组成⼀个对等(线程)池,独⽴于其他线程创建的线程.主线程和其他线程的 区别仅在于它总是进程中第⼀个运⾏的线程.对等(线程)池概念的主要影响是,⼀个线程可以杀死它的任何 对等线程,或者等待它的任意对等线程终⽌.另外,每个对等线程都能读写相同的共享数据. 构造并发程序的三种基本⽅法的优劣 进程的优劣 在⽗进程与⼦进程间共享状态信息,进程有⼀个⾮常清晰的模型: 共享⽂件表,但是不共享⽤户地址空间.进 程有独⽴的地址空间既是优点也是缺点.这样⼀来,⼀个进程不可能不⼩⼼覆盖另⼀个进程的虚拟地址,这 就消除了许多令⼈疑惑的错误--这是⼀个明显的优点. 另⼀⽅⾯,独⽴的地址空间使得进程共享状态信息变得更加困难.为了共享信息,它们必须使⽤显式的 IPC(进程间通信).基于进程的设计的另⼀个缺点是,它们往往⽐较慢,因为进程控制和IPC的开销很⾼. I/O多路复⽤的优劣 事件驱动设计的⼀个优点是,它⽐基于进程的设计给了程序员更多的对程序⾏为的控制. 另⼀个优点是,⼀个基于I/O多路复⽤的事件驱动服务器是运⾏在单⼀进程上下⽂中的,因此每个逻辑流都 能访问该进程的全部地址空间.这使得流之间共享数据变得很容易.⼀个与作为单个进程运⾏相关的优点 是,你可以利⽤熟悉的调试⼯具来调试你的并发服务器,就像对顺序程序那样.最后,事件驱动设计常常⽐基 于进程的设计要⾼效很多,因为他们不需要进程上下⽂切换来调度新的流. 事件驱动设计的⼀个明显缺点就是编码复杂,随着并发粒度的减⼩,复杂性还会上升.基于事件的设计另⼀ 个重要缺点是它们不能充分利⽤多核处理器.

文档评论(0)

152****1430 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档