Linux服务器高性能编程——读书笔记(五)
来源:互联网 发布:新浪实时股票数据接口 编辑:程序博客网 时间:2024/05/01 00:14
第十一章 定时器
网络编程中定时器这种定时触发的工具非常重要,可以在某段时间之后触发某段代码,可以用各种数据结构对它们统一管理,这章主要介绍时间轮和时间堆。Linux提供三种定时方法:socket 选项 SO_RCVTIMEO和SO_SNDTIMEO、SIGALRM 信号、I/O复用系统调用的超时参数。
11.1 socket 选项 SO_RCVTIMEO 和 SO_SNDTIMEO
这两个选项设置了接收数据的超时时间和发送的超时时间。SO_SNDTIMEO:send、sendmsg,SO_RCVTIMEO:recv、recvmsg、accept。如果超时返回-1,errno为EAGAIN或者EWOULDBLOCK。connect可以设置SO_SNDTIMEO,就是非阻塞调用connect同时建立多个连接的一种方法,超时返回-1,errno为EINPROGRESS。
使用setsockopt更改套接字选项,struct timeval是时间单位,一旦满足超时条件就可以处理了,比如之前的非阻塞connect就可以用select查看是否连接了。
11.2 SIGALRM信号
先讲了一个简陋的基于升序链表的定时器。回调函数:说白了就是函数作为另一个函数的参数使用的方式,调用者的参数为指向函数的指针,而实参就是某个函数,这就是回调 ,其它都白扯。在epoll_wait取得监听时间时,加一个节点到计时链表上,
11.3 利用I/O复用的三个函数
利用select、poll和epoll来统一定时操作,不过需要不断更新定时参数,因为可能提前触发。用time(NULL)获取开始的时间和结束的时间,每次循环重置。
11.4 高性能定时器
时间轮,时间堆,适用范围很大,时间轮的每个槽是一个链表,
- Linux服务器高性能编程——读书笔记(五)
- Linux服务器高性能编程——读书笔记(一)
- Linux服务器高性能编程——读书笔记(二)
- Linux服务器高性能编程——读书笔记(三)
- Linux服务器高性能编程——读书笔记(四)
- 《linux高性能服务器编程》读书笔记
- 《Linux高性能服务器编程》读书笔记之tcp协议详解
- Linux 高性能服务器编程——多进程编程
- Linux 高性能服务器编程——多线程编程
- Linux高性能服务器编程——多进程编程
- Linux——高性能服务器编程,多进程编程
- Linux 高性能服务器编程——高性能服务器程序框架
- 《Linux高性能服务器编程》学习笔记——第八章 高性能服务器程序框架
- Linux 高性能服务器编程——IP协议详解
- Linux 高性能服务器编程——TCP协议详解
- Linux 高性能服务器编程——socket选项
- Linux 高性能服务器编程——I/O复用
- Linux高性能服务器编程——I/O复用
- hadoop技术基本架构
- Python学习笔记(6)List and Keyboard Control
- 模版
- 对标准H264码流的RTP打包 VLC播放RTP打包发送的.264文件
- inner join on , left join on , right join on
- Linux服务器高性能编程——读书笔记(五)
- 02MYSQL学习之引入篇
- view绘制过程
- Java配置Hibernate教程
- CSM认证培训知识点总结
- 用电脑做服务器,搭建应用后应对不同网络环境发布应用
- ERP项目实施记录08
- Windows 7 完全硬盘安装方法 干干净净的C盘
- 编译原理-文法