Skip to content

Latest commit

 

History

History
42 lines (28 loc) · 1.43 KB

File metadata and controls

42 lines (28 loc) · 1.43 KB

Table of Contents generated with DocToc

kqueue

kqueue是BSD中使用的内核事件通知机制,一个kqueue指的是一个描述符,这个描述符会阻塞等待直到一个特定的类型和种类的事件发生

Microsoft Windows 是一套操作系统,FreeBSD 也是一套操作系统。Mac OS X 就是使用 FreeBSD 做为系统核心

源码

// go1.21.5/src/syscall/ztypes_darwin_arm64.go
type Kevent_t struct {
	Ident  uint64 //该事件关联的描述符,常见的有socket fd,file fd, signal fd等
	Filter int16 //事件的类型,比如读事件EVFILT_READ,写事件EVFILT_WRITE,信号事件EVFILT_SIGNAL
	//事件的行为,也就是对kqueue的操作,下面介绍几个常用的
	//如EV_ADD:添加到kqueue中,EV_DELETE从kqueue中删除
	//EV_ONESHOT:一次性或事件,kevent返回后从kqueue中删除
	//EV_CLEAR:事件通知给用户后,事件的状态会重置,
	Flags  uint16
	Fflags uint32
	Data   int64
	Udata  *byte //用户指定的数据
}

参考