- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于协程的网络开发框架的设计与实现参考
谢谢大家! 假设有五位哲学家围坐在一张圆形餐桌旁,做以下两件事情之一:吃饭,或者思考。吃东西的时候,他们就停止思考,思考的时候也停止吃东西。餐桌中间有一大碗意大利面,每两个哲学家之间有一只餐叉。因为用一只餐叉很难吃到意大利面,所以假设哲学家必须用两只餐叉吃东西。他们只能使用自己左右手边的那两只餐叉。 哲学家从来不交谈,这就很危险,可能产生死锁,每个哲学家都拿着左手的餐叉,永远都在等右边的餐叉(或者相反) * 分享者:刘建平 MSN: @ 基于协程的网络开发框架设计 内容概要 1. 协程概念 2. C10K提出的问题与对策 3. 调度 4. 网络框架的设计原则 5. 简单实现 6. FAQ 协程 协程概念 和子例程一样,协程也是一种程序组件。 协程比子例程更一般化。 子例程的起始处是惟一的入口点; 协程的起始处是第一个入口点,在协程里,返回点之后是接下来的入口点。? ? ? ? ? 子例程的生命期遵循后进先出(最后一个被调用的子例程最先返回); 相反,协程的生命期完全由他们的使用的需要决定。? ? ? ? ? ? ? ? ? 因为相对于子例程协程可以有多个入口和出口点,可以用协程来实现任何的子例程。 事实上,正如 Knuth 所说:“子例程是协程的特例。” 生产者消费者例子 var q?:= new queue 生产者协程(producer) loop while q is not full create some new items add the items to q yield to consumer #协程切换 消费者协程 (consumer) loop while q is not empty remove some items from q use the items yield to producer #协程切换 每个协程在用yield命令 向另一个协程交出控制 时都尽可能做了更多的 工作。 放弃控制使得另一个 例程从这个例程停止 的地方开始,但因为 现在队列被修改了 所以他可以做更多 事情。 尽管这个例子常用来 介绍多线程,实际没有 必要用多线程实现 这种动态: yield语句可以通过 由一个协程向另一个 协程直接分支的方式 实现。 协程 切换自由 除了第一入口点,外还有很多其它入口点 缺点 特点 切换自由 除了第一入口点,外还有很多其它入口点 协成调度必须自主控制,增加开发难度 各种子例程切换开销对比 子例程 地址空间 表项 私有数据 栈空间 执行点 进程 ? ? ? ? ? 线程 ? ? ? ? 协程 ?【?】 ?【?】 ? ? 协程使用的常见场景 生产器 角色模型 状态机 在一个子例程里实现状态机,这里状态由该过程当前的 出口/入口点确定;这可以产生可读性更高的代码。 并行的角色模型,例如计算机游戏。每个角色有自己的过程(这又在逻辑上分离了代码),但他们自愿地向顺序执行各角色过程的中央调度器交出控制(这是合作式多任务的一种形式) 它有助于输入/输出和对数据结构的通用遍历。 协程 实现的开发语言 Simula Modula-2 C# Stackless Python Lua Lo C语言的实现 .uk/~sgtatham/coroutines.html? ? ? ? ?? /libpcl.html http://software.schmorp.de/pkg/libcoro.html? ? 内容概要 1. 协程概念 2. C10K提出的问题与对策 3. 调度 4. 网络框架的设计原则 5. 简单实现 6. FAQ C10K 问题描述 主要表现 网络服务在处理数以万计的客户端连接时,往往出现效率低下甚至完全瘫痪,这被称为?C10K问题 设计不够良好的程序,其性能和连接数及机器性能的关系往往是非线性的。 参考:?/c10k.html? C10K 系统改进 参考:?/c10k.html 同步API =》 异步API linux 2.6 增加 AIO windows 提供 IOCP select ? ? =》 poll/epoll/kqueue C10K 高性能网络服务 参考:http://pl.atyp.us/content/tech/servers.html 性能低下的四要害 Data copy Context switches Memory allocation Lock contention 内容概要 1. 协程概念 2. C10K提出的问题与对策 3. 调度 4. 网络框架的设计原则 5. 简单实现 6. FAQ 调度 哲学家就餐问题是用来演示并行计算和多线程同步时产生的问题 ? 参考:?/zh-cn/哲学家
您可能关注的文档
- 土木工程毕业设计(论文)-秦皇岛某高校图书馆设计参考.doc
- 土木工程毕业设计(论文)-沈阳某办公楼结构设计参考.doc
- 土木工程毕业设计(论文)-锦江之星商务酒店设计参考.doc
- 土木工程毕业设计(论文)开题报告-长春市新城吾悦综合楼设计参考.doc
- 土木工程毕业设计(论文)文献综述-湖州某中学行政楼框架结构设计参考.doc
- 土木工程特种结构精品小抄-按手写字母排版试题答案无重复参考.doc
- 圣诞嘉年华策划活动方案参考.doc
- 在全县教育系统深入开展党的群众路线教育实践活动总结大会上的讲话参考.doc
- 在Web上销售-盈利模式参考.ppt
- 在线图书商城系统课程设计报告参考.doc
- Unit 2 课时2 Section A Pronunciation&2a-2e(课件)-2025-2026学年七年级英语下册(人教版2024).pptx
- 第1讲 小说阅读(原卷版)-2026年中考语文现代文阅读考点剖析与讲练(全国通用).docx
- 第6讲 外国小说阅读(原卷版)-2026年中考语文现代文阅读考点剖析与讲练(全国通用).docx
- 教学中重要的“点”(三)拓展点、空白点与兴趣点 课件--2025年青年教师业务培训.pptx
- Unit 2 课时1 Section A 1a-1e(课件)-2025-2026学年七年级英语下册(人教版2024).pptx
- 29.1 投影(第1课时 投影的概念与分类)(教学课件)-2025-2026学年九年级数学下册(人教版2024).pptx
- 时政03 第十五届全运会(激情全运会 活力大湾区)课件-2026年中考道德与法治最新时政热词积累与押题预测(全国通用).pptx
- 第1讲 小说阅读(解析版)-2026年中考语文现代文阅读考点剖析与讲练(全国通用).docx
- 2025-2026学年河南省豫西北教研联盟(平许济洛)高三1月月考(二测)语文试题(无答案).docx
- 28.2.1 解直角三角形(培优教学课件)-2025-2026学年九年级数学下册(人教版2024).pptx
原创力文档


文档评论(0)