相关文件 muduo/net/Channel.h muduo/net/Channel.cc 作用 Channel可理解为一个文件描述符fd和如何处理它的事件的回调函数的封装。 Channel负责注册和响应IO事件. muduo用户一般不直接使用Channel,而使用更上一层的封装,如TCPConne ...
分类:
其他好文 时间:
2021-05-24 12:25:58
阅读次数:
0
常见的IO事件处理模型有两种:Reactor和Proactor。Redis中的ae就是采用的Reactor事件处理模型,Proactor需要操作系统的支持,目前暂时还没接触到相关的使用场景,主要是学习模型结构。 ###Reactor模型 Handler:用来标识一个文件描述符 Synchronous ...
分类:
其他好文 时间:
2020-07-12 14:39:47
阅读次数:
53
核心部分 NIO( New Input/ Output) , 引入了一种基于通道和缓冲区的 I/O 方式,NIO 是一种同步非阻塞的 IO 模型。同步是指线程不断轮询 IO 事件是否就绪,非阻塞是指线程在等待 IO 的时候,可以同时做其他任务。同步的核心就是 Selector,Selector 代替 ...
分类:
编程语言 时间:
2020-06-08 19:08:32
阅读次数:
53
学习IO,首先要明白四个东西。 1.同步 java自己去处理io。 2.异步 java将io交给操作系统去处理,告诉缓存区大小,处理完成回调。 3.阻塞 使用阻塞IO时,Java调用会一直阻塞到读写完成才返回。 4.非阻塞 使用非阻塞IO时,如果不能立马读写,Java调用会马上返回,当IO事件分发器 ...
分类:
编程语言 时间:
2020-04-12 14:09:51
阅读次数:
73
NIO和BIO最大的区别就是只需要开启一个线程就可以处理来自多个客户端的IO事件。 BIO:同步阻塞式IO,服务器实现模式为一个连接建立一个线程,即客户端有连接请求时,服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情,会造成不必要的线程开销,可以通过线程池机制改善 BIO原理:单线程:同 ...
分类:
其他好文 时间:
2020-02-17 14:16:14
阅读次数:
76
<! TOC "回顾NioEventLoop的run方法流程" "IO事件与非IO任务" "处理IO事件" "处理非IO任务" "聚合定时任务到普通任务队列" "从普通队列中获取任务" "计算任务执行的超时时间" "安全执行" "计算是否超时" "总结" <! /TOC 回顾NioEventLoop ...
分类:
Web程序 时间:
2019-12-06 00:21:19
阅读次数:
130
swoole是PHP的扩展,又不是一个普通的扩展。普通的扩展只是提供一个库函数。而swoole扩展在运行后会接管PHP的控制权,进入事件循环。当IO事件发生后,swoole会自动回调指定的PHP函数。 在实际生产环境中,swoole提供了一个PHP 异步网络通信引擎。使 PHP 开发人员可以编写高性 ...
分类:
其他好文 时间:
2019-12-02 23:51:33
阅读次数:
130
golang和swoole区别 开发效率 Go语言是本质上是静态语言,开发效率稍差,但性能更强,更适合底层软件的开发 Swoole使用PHP语言,动态脚本语言,开发效率最佳,更适合应用软件的开发 IO模型 go语言使用单线程eventloop处理IO事件,多线程实现协程调度,执行用户层代码 swoo ...
分类:
其他好文 时间:
2019-12-02 23:45:40
阅读次数:
125
提到node,我们就可以立刻想到单线程、异步IO、事件驱动等字眼。首先要明确的是node真的是单线程的吗,如果是单线程的,那么异步IO,以及定时事件(setTimeout、setInterval等)又是在哪里被执行的。 其实,按照严格来说,node并不是单线程的。node中存在着多种线程,包括: j ...
分类:
编程语言 时间:
2019-11-18 18:23:32
阅读次数:
103
一、第一性原理 将异步的io、事件解释为observable。并借用observer的一些类概念进行处理。 ReactiveX is a library for composing asynchronous and event-based programs by using observable s ...
分类:
其他好文 时间:
2019-10-12 21:10:04
阅读次数:
127