8月11日学习近况小结

近日在了解学习并发服务器基础时,了解到了io多路复用。

io多路复用是,单线程,进程同时监测若干文件描述符是否执行io操作的能力。

相较于前面了解的多线程,多进程并发服务器,节省更多资源。

资源消耗来自于,线程进程创建,cpu使用切换成本,多线程资源竞争。

因此新了解的io多路复用,让我们用更少资源解决更多问题。

linux系统提供多种io模型

阻塞io

非阻塞io

io多路复用

信号驱动io

异步io。

今天了解的是io多路复用的select函数

select的调用会阻塞到有文件描述符可以进行IO操作或被信号打断或者超时才会返回。

select将监听的文件描述符分为三组,每一组监听不同的需要进行的IO操作。readfds是需要进行读操作的文件描述符,writefds是需要进行写操作的文件描述符,exceptfds是需要进行异常事件处理的文件描述符。这三个参数可以用NULL来表示对应的事件不需要监听。

当select返回时,每组文件描述符会被select过滤,只留下可以进行对应IO操作的文件描述符。

FD_xx的函数是用来操作文件描述符组和文件描述符的关系。

FDFD_SET添加一个文件描述符到组中,FD_CLR对应将一个文件描述符移出组中_ZERO用来清空文件描述符组。每次调用select前都需要清空一次。

FD_ISSET检测一个文件描述符是否在组中,我们用这个来检测一次select调用之后有哪些文件描述符可以进行IO操作

select可同时监听的文件描述符数量是通过FS_SETSIZE来限制的,在Linux系统中,该值为1024,当然我们可以增大这个值,但随着监听的文件描述符数量增加,select的效率会降低,我们会在不同IO多路复用方案优缺点一节中展开。

记于8.11日

华清远见培训

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值