网站首页 > 教程分享 正文
1.理解阻塞io,非阻塞io,同步io,异步io的区别
2.理解BIO和AIO的区别
io多路复用只负责io检测,不负责io操作
阻塞io中的write,能写多少是多少,只要写成功就返回,譬如准备写500字节,但是只写成功了300就会返回,不会阻塞到500字节全部写成功才返回
iocp是一种异步io
listen(fd, backlog)backlog是指全连接队列长度吗?
connect和accept函数同时具备检测io和操作io的功能,
譬如,①多次调用connect,但是errno的值可能不同 ②若全连接队列为空,调用accept返回-1,errno为EWOULDBLOCK,这是检测功能,若全连接队列不为空,会对全连接队列进行操作
断开连接:close和shutdown,close关闭读写端,shutdown关闭读端或者写端
有的服务器框架需要支持半关闭状态,所以要注意一下读端关闭和写端关闭
当read()返回-1,errno为EWOULDBLOCK,说明读缓冲区为空,errno为EINTR说明read操作被打断了?
io函数只能检测一条连接的就绪状态以及操作一条连接的io数据
在reactor中,io多路复用是用来做io检测的,io函数去操作io(io函数的检测功能不使用)
reactor为什么搭配非阻塞io?(因为io已经检测好了,调用阻塞的io不一样吗?select,poll,epoll)
- 多线程环境 考虑场景(将一个listenfd放到多个epoll去处理,有多个线程,每个线程有一个epoll,这个行为是被允许的)这一条没理解
- 边缘触发下必须使用非阻塞io,读事件触发的时候,read在一次事件循环中,要把read buffer读空,因为当read恰好读不到数据的情况下,如果使用阻塞io就会阻塞
- select bug 使用man select,然后搜索”bugs“,当某个socket接收缓冲区又新数据到达,然后select报告这个socket描述符可读,但随后,协议栈检查这个新数据校验和错误,并且丢弃这个数据,这时候调用read没有数据可读,如果socket没有被设置为NON_BLOCK,此read将阻塞当前线程
redis
- 环境(①keyvalue数据结构,支持多种数据结构,内存数据库②命令处理是单线程的(为什么用单线程,答:因为使用了丰富的数据结构,给这些数据结构枷锁有点复杂))
- redis为什么要使用单reactor(①因为是单线程的,所以也是单reactor②操作具体命令的时间复杂度比较低)
- redis怎么处理reactor
- redis针对reactor做了哪些优化?(io多线程①read和decode放一个线程,②write和encode放一个线程,③reactor和acceptor放一个线程)
redis源码解读
memcached
多reactor
- 环境(①keyvalue数据结构,不支持丰富的数据结构,内存数据库②命令处理是多线程的(为什么用多线程,答:因为数据结构简单,给这些数据结构枷锁比较方便,用多线程效率高))
- memcached为什么要使用多reactor(多线程效率高)
- memcached怎么处理reactor
猜你喜欢
- 2025-03-07 Tomcat+Memcached/Redis,构建高可用解决方案(完结无秘)
- 2025-03-07 内存数据库优缺点一览:Redis、Memcached、MongoDB和Ignite
- 2025-03-07 Wordpress建站教程:Siteground主机开启Memcached缓存的方法
- 2025-03-07 Rust语言从入门到精通系列 - 高性能缓存Memcached实战教程
- 2025-03-07 青云QingCloud新增Memcached功能 完善缓存集
- 2025-03-07 Mcrouter 介绍 -- 来自 Facebook 的 memcached 协议路由器
- 2025-03-07 Redis与memcached相对有哪些优势?
- 2025-03-07 Java中间件-Memcached
- 2025-03-07 Redis与Memcache有什么区别?
- 2025-03-07 Tomcat+Memcached/Redis集群 构建高可用解决方案(完结)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- css导航条 (66)
- sqlinsert (63)
- js提交表单 (60)
- param (62)
- parentelement (65)
- jquery分享 (62)
- check约束 (64)
- curl_init (68)
- sql if语句 (69)
- import (66)
- chmod文件夹 (71)
- clearinterval (71)
- pythonrange (62)
- 数组长度 (61)
- javafx (59)
- 全局消息钩子 (64)
- sort排序 (62)
- jdbc (69)
- php网页源码 (59)
- assert h (69)
- httpclientjar (60)
- postgresql conf (59)
- winform开发 (59)
- mysql数字类型 (71)
- drawimage (61)
本文暂时没有评论,来添加一个吧(●'◡'●)