Что такое kq в Go

«Что такое kq в Go» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

kq — это дескриптор событий ядра (kqueue) в Unix-подобных системах, используемый для мониторинга событий ввода-вывода. В Go он применяется в низкоуровневых сетевых операциях, например, в пакете netpoll рантайма.

Пример использования kqueue в Go (через syscall):

kq, err := syscall.Kqueue()
if err != nil {
    log.Fatal(err)
}
// Добавление файлового дескриптора в мониторинг
ev := syscall.Kevent_t{
    Ident:  uint64(fd),
    Filter: syscall.EVFILT_READ,
    Flags:  syscall.EV_ADD | syscall.EV_ENABLE,
}
_, err = syscall.Kevent(kq, []syscall.Kevent_t{ev}, nil, nil)

Важно: В стандартной библиотеке Go kqueue абстрагирован, и напрямую его используют редко — вместо этого работают с net.Listener или os.File.