select服务器
来源:互联网 发布:tensorflow on spark 编辑:程序博客网 时间:2024/05/29 04:34
一、select函数认识
nfds:是需要监视的最大的文件描述符的值加1。
readfds:(可选)指针,指向一组等待可读性检查的套接口。
writefds:(可选)指针,指向一组等待可写性检查的套接口。
exceptfds:(可选)指针,指向一组等待错误检查的套接口。
timeout:select()最多等待时间,对阻塞操作则为NULL。
timeout为结构timeval,用来设置select()的等待时间,其结构定义如下
struct timeval
{
long tv_sec; //second 秒
long tv_usec; //microsecond 微妙
};
FD_CLR 从集合中删除某个描述字。
FD_ISSET 判断某个文件描述符是否为真。
FD_SET 向集合添加描述字。
FD_ZERO 将集合初始化为空集NULL。
select()调用返回处于就绪状态并且已经包含在fd_set结构中的描述字总数;如果超时则返回0;否则的话,返回SOCKET_ERROR错误。
二、select模型认识
select模型属于网络的I/O复用模型,比纯粹的阻塞I/O模型更具有实用性,因为可以同时等待多个描述字的就绪,它的底层是通过位图来实现的,默认情况下一般可表示1024个文件描述符。
客户端:
服务器端:
运行结果:
select缺点:
(1)每次调⽤用select,都需要把fd集合从⽤用户态拷贝到内核态,这个开销在fd很多时会很⼤大
(2)同时每次调⽤用select都需要在内核遍历传递进来的所有fd,这个开销在fd很多时也很⼤大
(3)select⽀支持的⽂文件描述符数量太⼩小了,默认是1024
- Select服务器
- select服务器
- select服务器
- select服务器
- select服务器
- select服务器
- select服务器
- select服务器
- select服务器
- select服务器
- select服务器
- select服务器
- Select服务器
- select服务器
- select多路单线程服务器
- select模型服务器代码
- python 服务器 select 游戏
- tcp服务器(使用select)
- 【Leetcode】Binary Tree Paths 二叉树根结点到所有叶子结点的路径
- Elasticsearch的核心概念cluster/shards/replicas/recovery/gateway/discovery.zen/transport/settings/mapping等
- javascript学习日记——(2)
- SpringBoot非官方教程 | 第一篇:构建第一个SpringBoot工程
- Nginx配置搭建静态网站
- select服务器
- 机器学习之梯度下降法数学推导--分类
- TensorFlow之CNN图像分类及模型保存与调用
- SpringBoot非官方教程 | 第二篇:Spring Boot配置文件详解
- 除去文档中英文 数字 ?
- SpringBoot非官方教程 | 第三篇:SpringBoot用JdbcTemplates访问Mysql
- method initializationerror not found:JUnit4单元测试报错问题
- 二叉查找树
- java:Java入门第三季第四课:异常处理机制