go-epoll源码解析.md

发布时间 2023-11-10 12:19:37作者: 独步清风中

golang-epoll模型源码解析

epoll

epoll is an io multipexing model in linux env.

img

epoll generate epoll table.

A new socket will be put into epoll table after bind and listen operation. Then we will get ready events with wait func

img

When epoll_wait() returns ready events,we need determine whether it's a new connection at first.

If new, fdDesc will be added to epoll table for listen events.

Else it means there have read or wirte events for established connection, we need call epollout or epollin

fdDesc

file Description

src/internal/poll/fd_uni.go

type FD struct{

    fdmu fdMutex // lock sysfd and serialize access to read and write methods

    sysfd int // system file name, immutable until close

    pd pollDesc // I/O poller

    ***


    isFile /// whether this is a file rather tan a network socket
}

now show struct pollDesc

待完善