cindy POSA2读书笔记(二)
POSA2读书笔记(二)
while (select() > 0) {
getReadyEvents();
deactiveEvents();
addEventsToQueue();
}
- 动态内存分配。网络IO线程把事件添加到队列,工作线程从队列中取事件,不停的有添加删除操作,队列大小在不停的发生变化。
- 多同步操作。在对队列进行添加和删除操作时需要对队列进行同步(或者是在队列内部进行同步),同时各个工作线程之间从队列中取相应事件时需要同步。
- 线程切换:需要不停的在网络IO线程和各工作线程之间做语境切换。比如假设首先所有的工作线程都处于等待状态,这时来了某一个事件,工作线程A被唤醒,去处理该事件;然后又来一个事件,工作线程B被唤醒,去处理该事件;A工作完又回到等待状态,然后又被唤醒……
那么领导/追随模式是怎么样来避免上面的这三个瓶颈呢?
首先领导线程在通过select得到了许多的响应事件,然后领导线程把其中一个从selector上移除,并把一个追随线程提升为领导线程,然后自己就变成了工作线程处理该事件,等到事件处理完成后再变成追随线程或领导线程(如果结束时已经没有可用的领导线程的话)。
这个模式不需要进行动态内存分配,同步操作也比上一个模式少很多,由于领导线程直接变成工作线程处理事件,最大程度的减少了线程切换,所以上面那三 个瓶颈都能够得到很好的解决。但是这个模式也有相应的缺点:实现复杂,不像半同步/半异步模式能非常简单的实现。所谓有得必有失呀:)
这里可以做一个简单的比喻为两种模式做一下总结。场景是把一堆书从A地经过B地搬到C地(我想不到其他好的例子)。
如果是半同步/半异步模型的话,就是有一个人负责把书从A地搬到B地,其余的人在B地等着,一旦B地书来了,就把书再搬到C地。
如果是领导/追随者模型的话,则是所有的人都在A地排队等待,每个人搬一本送到C地,然后回来排到队伍的最后面。(领导/追随者模型并没有规定次序,所以回来后不一定是排在队伍的最后面,反而是非常有可能排在队伍的第二个位置,这样可以提升系统性能)
cindy POSA2读书笔记(二)相关推荐
- oracle直查和call哪个更快,让oracle跑的更快1读书笔记二
当前位置:我的异常网» 数据库 » <>读书笔记二 <>读书笔记二 www.myexceptions.net 网友分享于:2013-08-23 浏览:9次 <> ...
- 《How Tomcat Works》读书笔记(二)
<How Tomcat Works>读书笔记(二) 这是<How Tomcat Works>第一二章的读书笔记.第一张主要写了一个静态资源处理的web服务器,第二章加了对ser ...
- 3D游戏设计读书笔记二
3D游戏设计读书笔记二 一.简答题 • 解释 游戏对象(GameObjects) 和 资源(Assets)的区别与联系. GameObjects是一个具体的实例,Assets是包括诸多游戏素材的资 ...
- 《Docker 技术入门与实践》-读书笔记二
<Docker 技术入门与实践>-读书笔记一 <Docker 技术入门与实践>-读书笔记二 一.数据管理 用户在使用 Docker 的过程中,往往需要能查看容器内应用产生的数据 ...
- 《Introduction To Modern Cryptography》读书笔记二
<Introduction To Modern Cryptography>读书笔记二 本笔记纯粹个人读书习惯与相应见解,内容归纳完全出于个人需要与个人局限,如有修改意见(比如哪儿应该是值得 ...
- 《李元芳履职记》读书笔记二 IT技术管理的沟通与团队建设
<李元芳履职记>读书笔记二 接一 https://blog.csdn.net/qq_45937199/article/details/103305223 IT技术人员从技术岗走向管理岗,所 ...
- python图像处理《数字图像处理与python实现》读书笔记二:空间滤波
文章目录 重要! 第三章 空间滤波 概览 3.1 空间滤波基础 3.1.1 空间滤波的机理 3.1.2 空间滤波器模板 3.2 平滑处理 3.2.1 平滑线性空间滤波器 3.2.2 统计排序滤波器 3 ...
- 《淘宝技术这十年》读书笔记 (二).Java时代的脱胎换骨和坚若磐石
马云说过"一个好的东西往往是是说不清楚的",姑且不论这句话的对与错.但我真的很佩服<淘宝技术这十年>这本书的作者子柳,能够通过淘宝的一些故事,按照时间顺序和IT发展的各 ...
- 第一行代码 Android读书笔记(二)
第一行代码 Android读书笔记 第三章 软件也要拼脸蛋-UI开发的点点滴滴 常用控件的使用方法 详解4种基本布局 自定义控件 最常用和最难用的控件-ListView 更加强大的滚动控件-Recyc ...
最新文章
- linux守护实例有什么用,linux中的信号及进程守护的应用实例分享
- 我作为开发者犯过的两次愚蠢的错误
- echarts中树图的label的点击_ECharts 堆积木(砖块)游戏
- DCMTK:演示状态查看器-打印服务器
- python模拟上传多张图片
- 【Level 08】U06 Good Feeling L4 The surprising event
- 原生DOM选择器querySelector和querySelectorAll
- html布局四个正方形,分享一个css小技巧,实现给正方形的四个角设置小方块的方法...
- es的分片数量和扩展性分析
- 【Rust学习笔记】Rust生命周期参数的详细阐述
- PS调出唯美紫蓝色天空背景女生照片
- ps:HSB色彩模式
- JAVA试练塔之试炼技能图
- 手把手教你R语言CIBERSORT计算免疫浸润+Rproject的使用
- CDN的加速域名、源站地址与回源host之间的关系
- 关于eclipse导入项目后架包找不到问题
- 《那些年啊,那些事——一个程序员的奋斗史》——47
- 送给孩子的10句人生箴言
- 《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(上)
- 打开桌面计算机投屏到扩展屏,win10电脑桌面投屏到电视教程_Win10电脑怎么投屏到电视...