二、操作IO后返回值及对应现象

连接建立、连接断开、发送和接收
这四个过程都是通过网络IO完成的,网络IO又细分为检测IO和操作IO 。操作方式包括阻塞和非阻塞 。
二、操作IO后返回值及对应现象
三、检测IO
多个IO检测有IO多路复用完成 。
注意:接收连接时需要监听和read须两个读事件,主动连接时需要监听和write两个写事件 。
连接断开时错误码: 连接发生错误、 连接读端关闭、 连接双端关闭 。
由IO多路复用检测IO和非阻塞操作IO组成 。
四、为什么搭配非阻塞IO?
【二、操作IO后返回值及对应现象】1.多线程:一个由多个处理 。其中一个线程会获得锁处理,此时该fd相对于其他线程是阻塞状态,所以应该用非阻塞使其他线程立刻返回 。

二、操作IO后返回值及对应现象

文章插图
2.边缘触发模式下:通常采取一次事件触发,循环读取直到内核缓冲区为空的方式 。防止为空时还继续read,导致的阻塞 。
3.中的bug:当接收缓冲区中有新数据分节到达时,会报告该fd可读,但随后协议栈检查到分借检验和错误,会丢弃该分节导致该fd无数据可读造成阻塞 。
五、 在组件中的应用
redis特点:k ,v数据结构复杂,加锁困难(锁的粒度和种类),多采用单线程(业务逻辑)、具体的read和 (日志记录) write 和(获取排行榜记录) 放到线程池处理 。
: k,v数据节后简单,更适合并发处理多业务(主线程后,通过管道的方式通知其他线程,多线程对应多个业务) 。
nginx: 也适合处理业务类型复杂的任务 。通过进程隔离运行环境避免枷锁,从后fork多个子进程进行,通过锁在用户态解决惊群问题 。