I/O复用--select系统调用

本文详细介绍了I/O多路复用的概念,重点讲解了select系统调用,包括其主要用途、API、fd_set结构体、timeout及返回值。通过示例解释了select如何用于实现TCP服务器并发,同时也指出了select的局限性,如文件描述符数量限制和效率问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前面我有说过多进程,多线程处理tcp服务器并发,但是其实还是有问题的。对于每新到来一个 TCP 连接,就需要分配一个进程或者线程,那么如果要达到 C10K,意味着要一台机器维护 1 万个连接,相当于要维护 1 万个进程/线程,如果是10万个呢?这个开销也太大了,所以操作系统就算死扛也是扛不住的。

因此这节我们引入I/O复用,要申请那么多个进程线程,开销太大,如果我们可以只使用一个去维护多个socket的话,开销就会小很多。这种技术就是I/O多路复用技术了~

目录

什么是I/O多路复用呢?

本节我们就来聊聊select系统调用

select的主要用途:

select的API

对于nfds来讲:

fd_set结构体:

对fd_set结构体操作的函数:

 timeout :

select函数返回值

select的优缺点:

select实现tcp服务器并发


什么是I/O多路复用呢?

一个进程虽然任一时刻只能处理一个请求,但是处理每个请求的事件时,耗时控制在 1 毫秒以内,这样 1 秒内就可以处理上千个请求,把时间拉长来看,多个请求复用了一个进程,这就是多路复用,这种思想很类似一个 CPU 并发多个进程,所以也叫做时分多路复用。

I/O复用

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BearPot

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值