详解select、poll、epol

背景:

        这些都是在IO多路复用,也就是在服务端如何处理多个客户端的请求事件,一个常见的思路就是采用多线程:对于不同的事件,新开一个线程,单独处理该事件。但是存在的弊端是:开辟线程会创建线程栈会消耗资源,且不同线程会进行CPU的上下文切换,切换时要处理多个操作句柄,所以多线程不是好的方案。

select:

        首先用一个描述符集合也就是数组监听多个文件描述符,存储了多个监听的fd,然后将这个数组FD_SET转为bitmap,select会将这个bitmap会从用户态拷贝进入内核态,在内核中通过遍历的方式以阻塞的方式判断是否有数据到来,也就是事件是否就绪,如果某个fd就绪,就给这个fd置位,并将结果拷贝回用户态,用户从这个结果和原数组进行对应,通过遍历整个数组的方

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值