网络IO超时的几种实现
一、select/poll/epoll
int select(int maxfdp1, fd_set *readset, fd_set *writeset, fd_set *exceptset,struct timeval *timeout);
timeout为等待的指定时间,当有描述符符合条件 或是 超过超时时间的话,函数返回,可以利用timeout完成超时的判断
int poll ( struct pollfd * fds, unsigned int nfds, int timeout);
timeout为等待的指定时间,当有描述符符合条件 或是 超过超时时间的话,函数返回,可以利用timeout完成超时的判断
int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout);
timeout为等待的指定时间,当有描述符符合条件 或是 超过超时时间的话,函数返回,可以利用timeout完成超时的判断
示例 使用epoll时的nginx
timer为最早一个超时的事件的超时值,或为一个默认值
二、libcurl库提供的超时配置
curl_easy_setopt(xxx, CURLOPT_CONNECTTIMEOUT_MS, yyy
);尝试连接等待的时间,以毫秒为单位。如果设置为0,则无限等待。
curl_easy_setopt(xxx, CURLOPT_TIMEOUT_MS,yyy
); 设置cURL允许执行的最长毫秒数
三、alarm/setitimer
通过指定间隔时间发出SIGALRM信号,在检查是否有时间超时
示例:
nginx定时器
nginx提供了利用settimer每隔一段时间 唤起epoll_wait,在检查是否有时间超时的方式,避免了频繁调用gettimeofday的系统函数
四、利用recv/send提供的超时参数配置
setsockopt 可以对socket句柄设置各种参数,其中包括了SO_SNDTIMEO, SO_RCVTIMEO两个选择,他们可以控制使用recv, send时候的超时时间,但该参数不是对所有的系统都生效的
转载于:https://www.cnblogs.com/magicsoar/p/8759429.html
网络IO超时的几种实现相关推荐
- mysql 网络io_MySQL的各种网络IO超时的用法和实现
客户端C API 在C API中调用mysql_options()来设置mysql_init() 所创建的连接对象的属性,使用这三个选项可以设置连接超时和读写超时,单位都是秒.读写超时达到后C API ...
- 【网络IO】(二)多路复用器——内核级介绍
前言 在这个系列的上一篇文章中,我们介绍过网络IO中的两种IO模型--BIO与NIO,但这两种模型各有缺陷. BIO将系统资源浪费在了线程调度上,而NIO将系统资源浪费在了用户态与内核态的切换上. 为 ...
- mysql io模型_5种网络IO模型
同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出 ...
- 5种网络IO模型:阻塞IO、非阻塞IO、异步IO、多路复用IO、信号驱动IO
目录 前言 阻塞IO(blocking IO) 非阻塞IO(non-blocking IO) 多路复用IO(IO multiplexing) 异步IO(Asynchronous I/O) 模型间的区别 ...
- 五种网络IO模型详解
一 IO操作本质 数据复制的过程中不会消耗CPU # 1 内存分为内核缓冲区和用户缓冲区 # 2 用户的应用程序不能直接操作内核缓冲区,需要将数据从内核拷贝到用户才能使用 # 3 而IO操作.网络请求 ...
- 大白话详解5种网络IO模型
1 前言 我们都知道,为了实现高性能的通信服务器,BIO在高并发的情况下会出现性能急剧下降的问题,甚至会由于创建过多线程而导致系统OOM.因此在Java业界,BIO的性能问题一直被开发者所诟病,所幸的 ...
- 5种网络IO模型介绍
5种网络IO模型介绍 IO 模型分为以下几种: 阻塞IO 非阻塞IO 信号驱动IO IO多路复用 异步IO 前四个为同步IO 1 阻塞IO 一个IO操作需要两步: 等待数据和拷贝数据. blockin ...
- linux 网络io命令详解,Linux下五种网络IO模型详解
本文我们主要来了解一下Unix/Linux下5种网络IO模型:blocking IO, nonblocking IO, IO multiplexing, signal driven IO, async ...
- 因为取了个快递我搞懂了五种网络IO模型
五种网络IO模型 目录 前段时间,我有个朋友因为拿快递和家里闹别扭了,今天我就借这事来讲讲五大网络模型 阻塞IO模型 第一天: 刘:今天因为拿快递被我妈骂了一顿 我:说来听听 刘:我本来在家里打扫家务 ...
最新文章
- html点击按钮删除session,删除sessionstorage
- soot——相关资源
- linux下如何批量替换多个文件中的某个字符串?
- 图Graph--农夫过河问题(BFS/DFS应用)
- 阿里菜鸟-算法(一面)
- 操作系统读写者问题实验报告_Linux操作系统存储子系统核心技术之硬盘与RAID
- Linux学习之路(2-1)文件、目录与磁盘格式
- 禁用win10触摸屏手势_怎样禁用、启用Win10平板边缘滑动手势
- DeepFaceLab 2 merge阶段参数
- 通过docker创建Nginx容器并运行Vue项目(可用https进行访问)
- sqlserver 18456登录错误处理
- GDI+ 绘图闪烁解决方法
- Golang线程池gpool
- 【编程题】【Scratch三级】2021.03 接苹果
- 检查excel指定列中是否有错别字存在
- iOS企业版app部署到自己的服务器
- Hadoop 3.2.1 【 YARN 】源码分析 : DefaultContainerExecutor 浅析
- centos 7 dnf命令的安装
- 带语音的计算机,哪些电脑提醒软件带语音提醒?
- centos7.0下搭建论坛Discuz3.4详细步骤