随笔分类 -  muduo学习笔记

摘要:单线程服务器的常见编程模型: 在高性能的网络程序中,使用得最为广泛的是non-blocking IO + IO multiplexing模型,即reactor模式. 在上述模式中,程序的基本结构是一个事件循环,以事件驱动和事件回调的方式实现业务逻辑。基于事件驱动的编程模型也有其本质的缺点,它要求事件 阅读全文
posted @ 2016-08-08 16:25 合唱团abc 阅读(280) 评论(0) 推荐(0) 编辑
摘要:timerfd是Linux为用户程序提供的一个定时器接口,这个接口基于文件描述符。 clock_gettime函数可以获取系统时钟,精确到纳秒。需要在编译时指定库:-lrt。可以获取两种类型时间: CLOCK_REALTIME:相对时间,从1970.1.1到目前的时间。更改系统时间会更改获取的值。也 阅读全文
posted @ 2016-07-27 14:28 合唱团abc 阅读(1021) 评论(0) 推荐(0) 编辑
摘要:一. read/write的语义:为什么会阻塞? 先从write说起: 首先,write成功返回,只是buf中的数据被复制到了kernel中的TCP发送缓冲区。至于数据什么时候被发往网络,什么时候被对方主机接收,什么时候被对方进程读取,系统调用层面不会给予任何保证和通知。 write在什么情况下会阻 阅读全文
posted @ 2016-07-23 14:46 合唱团abc 阅读(628) 评论(0) 推荐(2) 编辑
摘要:1.close()函数 close 一个套接字的默认行为是把套接字标记为已关闭,然后立即返回到调用进程,该套接字不能再由close的调用进程使用,也就是说它不能再作为read或write的第一个参数,然而TCP将尝试发送已排队等待发送到对端的任何数据,发送完毕后发生的是正常的TCP连接终止序列。 在 阅读全文
posted @ 2016-07-23 14:31 合唱团abc 阅读(461) 评论(0) 推荐(0) 编辑
摘要:多线程TcpServer自己的EventLoop只用来接收新连接(即TcpServer所属线程的EventLoop只监听listen fd),而新连接会用其他EventLoop来执行IO(即每个新TcpConnection对象都会在线程池中分配一个线程来处理该连接上的IO事件). 单线程TcpSer 阅读全文
posted @ 2016-07-16 13:39 合唱团abc 阅读(532) 评论(0) 推荐(0) 编辑
摘要:Acceptor类:用于接收新的TCP连接,该类是内部class,供TcpServer使用,生命期由TcpServer控制 类成员: TcpServer类:管理accept获得的tcp连接.TcpServer是供用户直接使用的,生命期由用户控制. muduo尽量让依赖是单项的,TcpServer会用 阅读全文
posted @ 2016-07-13 14:58 合唱团abc 阅读(2265) 评论(0) 推荐(0) 编辑
摘要:Reactor模式: Reactor包含如下角色: Handle 句柄;用来标识socket连接或是打开文件; Synchronous Event Demultiplexer:同步事件多路分解器:由操作系统内核实现的一个函数;用于阻塞等待发生在句柄集合上的一个或多个事件;(如select/epoll 阅读全文
posted @ 2016-07-06 16:05 合唱团abc 阅读(370) 评论(0) 推荐(0) 编辑
摘要:Unix/Linux上的五种IO模型(UNP6.2) IO多路复用一般不能和blocking IO用在一起,因为blocking IO中read() write() accept() connect()都有可能阻塞当前线程,这样线程就没办法处理其他socket上的IO事件了 non-blocking 阅读全文
posted @ 2016-07-02 16:17 合唱团abc 阅读(741) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示