golang 源码分析之 网络轮询器

博客围绕Go语言的网络轮询器展开,介绍了其在runtime/netpoll.go文件中需实现的方法及对应文件描述符的结构体。还提到在文件描述符上执行读写操作时,若不可读或不可写,当前Goroutine会检查状态并等待其可读或可写。

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

网络轮询器
为了提高 I/O 多路复用的性能,不同的操作系统也都实现了自己的 I/O 多路复用函数,
例如:epoll、kqueue 和 evport 等。
Go 语言为了提高在不同操作系统上的 I/O 操作性能,使用平台特定的函数实现了多个版本的网络轮询模块
src/runtime/netpoll_epoll.go
src/runtime/netpoll_kqueue.go
src/runtime/netpoll_solaris.go
src/runtime/netpoll_windows.go
src/runtime/netpoll_aix.go
src/runtime/netpoll_fake.go

在runtime/netpoll.go 文件中描述了需要实现的方法

func netpollinit()
    //初始化网络轮询器
func netpollopen(fd uintptr, pd *pollDesc) int32
   //监听文件描述符上的边缘触发事件,创建事件并加入监听
func netpoll(delta int64) gList
    //如果参数小于 0,无限期等待文件描述符就绪;
    //如果参数等于 0,非阻塞地轮询网络;
    //如果参数大于 0,阻塞特定时间轮询网络;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值