select函数的执行过程

当前进程调用select函数时,会把当前进程从工作队列中取出来,然后把当前进程的引用放入你需要监听的socket的等待队列,socket包含三个部分,读缓冲区,写缓冲区,等待队列。当你的网卡有数据过来的时候,DMA设备会把数据写进内存,然后向cpu发起一个硬中断,cpu会保存当前的环境,取执行中断程序,cpu要做两件事,一是根据数据报TCP的首部的目的端口号找到对应的socket,将数据写进socket的缓冲区,然后唤醒在socket等待队列的进程,放进工作队列,然后会在就绪的socket的文件描述符中做个标记,标记它就绪了,然后select函数就执行完了,返回到Java层面,然后就是轮询每个socket,处理那个打标记的socket就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值