select机制的原理
应用程序中最广泛用到的是 BSD UNIX 中引入的 select()系统调用,其原型如下
int select(int numfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,struct timeval *timeout);
其中 readfds、writefds、exceptfds 分别是被 select()监视的读、写和异常处理的文件描述符集合,numfds 的值是需要检查的号码最高的文件描述符加 1。timeout 参数是
一个指向 struct timeval 类型的指针,它可以使 select()在等待 timeout 时间后若没有文件描述符准备好则返回
timeval 结构体定义
struct timeval
{int tv_sec; /* 秒 */int tv_usec; /* 微妙 */
};
下列操作用来设置、清除、判断文件描述符集合。
FD_ZERO(fd_set *set)
清除一个文件描述符集。
FD_SET(int fd,fd_set *set)
将一个文件描述符加入文件描述符集中。
FD_CLR(int fd,fd_set *set)
将一个文件描述符从文件描述符集中清除。
FD_ISSET(int fd,fd_set *set)
判断文件描述符是否被置位
由于调用select的时候,每个驱动的poll函数接口都会被调用到,实际上执行select的进程被挂到了每个驱动的等待队列上。可以被任何一个驱动唤醒
转载于:https://www.cnblogs.com/liushuhe1990/p/9618669.html
select机制的原理相关推荐
- Redis数据持久化机制AOF原理分析一---转
http://blog.csdn.net/acceptedxukai/article/details/18136903 http://blog.csdn.net/acceptedxukai/artic ...
- Java 数据交换格式反射机制SpringIOC原理分析
数据交换格式&反射机制&SpringIOC原理分析 什么是数据交换格式? 数据交换格式使用场景 JSON简单使用 什么是JSON? JSON格式的分类 常用JSON解析框架 使用fas ...
- 【MySQL进阶】MySQL事务隔离与锁机制底层原理万字总结(建议收藏!!)
[MySQL进阶]MySQL事务隔离与锁机制底层原理万字总结(建议收藏!!) 参考资料: 美团技术团队:Innodb中事务隔离级别和锁的关系 数据库的锁,到底锁的是什么? 阿里面试:说说一致性读实现原 ...
- Redis数据持久化机制AOF原理分析二
本文所引用的源码全部来自Redis2.8.2版本. Redis AOF数据持久化机制的实现相关代码是redis.c, redis.h, aof.c, bio.c, rio.c, config.c 在阅 ...
- Mysql锁机制及原理简析
Mysql锁机制及原理简析 一.前言 1.什么是锁? 锁是计算机协调多个进程或线程并发访问某一资源的机制. 锁保证数据并发访问的一致性.有效性: 锁冲突也是影响数据库并发访问性能的一个重要因素. 锁是 ...
- Mysql事务回滚机制与原理
Mysql事务回滚机制与原理 文章目录 Mysql事务回滚机制与原理 一.事务回滚机制 二.使用到的技术讨论 三.redo log和undo log介绍 3.1 redo log 3.2 undo l ...
- mysql默认锁机制是什么_MySQL中锁机制的原理是什么
MySQL中锁机制的原理是什么 发布时间:2020-12-08 14:48:30 来源:亿速云 阅读:81 作者:Leah MySQL中锁机制的原理是什么?针对这个问题,这篇文章详细介绍了相对应的分析 ...
- Java序列化的机制和原理
有关Java对象的序列化和反序列化也算是Java基础的一部分,下面对Java序列化的机制和原理进行一些介绍. Java序列化算法透析 Serialization(序列化)是一种将对象以一连串的字节描述 ...
- android handler的机制和原理_一文搞懂handler:彻底明白Android消息机制的原理及源码
提起Android消息机制,想必都不陌生.其中包含三个部分:Handler,MessageQueue以及Looper,三者共同协作,完成消息机制的运行.本篇文章将由浅入深解析Android消息机制的运 ...
- Android 为什么要有handler机制?handler机制的原理
为什么要有handler机制? 在Android的UI开发中,我们经常会使用Handler来控制主UI程序的界面变化.有关Handler的作用,我们总结为:与其他线程协同工作,接收其他线程的消息并通过 ...
最新文章
- 改变shell read命令的隔符
- 贪心 ---- Codeforces Global Round 8,B. Codeforces Subsequences[贪心,贪的乘法原理]
- WindowsServer2003服务器
- 基于ArcGIS JS API 4.11实现对FeatureLayer的多变量渲染
- jvm Classload method介绍
- 每天坚持不懈的写软文,得到的几点心得感悟
- [Electron]仿写一个课堂随机点名小项目
- JAVA学习笔记——JAVA基础语法之精华
- 网络爬虫之java基础篇QueryRunner(Ⅲ)
- Java 匿名内部类解析
- (转)Spring Boot (十):邮件服务
- 笨办法学 Python · 续 第一部分:预备知识
- 蓝桥杯 ALGO-94 算法训练 新生舞会
- jsx中如何解决{if…else…}的问题
- pandas 数据分析 相关性_Pandas库学习笔记2-Pandas数据特征分析
- 截止2021年7月中国有多少大学生?
- 2017 CCCC预赛总结
- word自动添加题注,带章节编号并根据章节重新开始编号
- 游戏开发九宫格战斗架构解析具体解释
- canvas-随机粒子特效
热门文章
- 用Asp.net制作顶部导航控件
- 分享一个vue项目“脚手架”项目的实现步骤
- FTP协议的命令与返回码
- Tomcat部署到CentOS7
- 懒加载的3种实现方式
- LOJ 6278 数列分块入门2
- mac XAMPP环境下, 使用php函数mkdir()添加新目录(文件)报错,报错信息:permission denied;...
- 安装freetds小记
- Linux编程中 #define _XOPEN_SOURCE的作用
- MySQL 优化--持续整理