Как часто выполняется цикл опроса сети Golang?

#go #goroutine #epoll

#Вперед #goroutine #epoll

Вопрос:

Новичок в Golang здесь. Я читал о планировании времени выполнения Golang. В этом блоге упоминается, что среда выполнения Go запускает сетевой опросник как отдельный поток, который объединяет экземпляры epoll (для Linux), чтобы получить список программ, которые можно отключить.

Это вызвало у меня пару вопросов:

  • Как часто выполняется этот сетевой опрос?
  • Как он уведомляет, какие программы теперь готовы и могут быть добавлены в очередь выполнения?
  • Как среда выполнения go гарантирует, что поток сетевого опроса не истощен?

Комментарии:

1. Насколько я знаю, netpoller запускает неизменяемый интерфейс опроса ОС, например, в Linux он использует epoll. Это означает, что он просто спит, ожидая, пока что-нибудь будет готово, и ОС уведомляет его, может ли он выполнять ввод-вывод.

2. В epoll нет «частоты», поэтому первый вопрос не имеет смысла в его текущей форме, а другие вопросы немного сбивают с толку. Может быть, это поможет: ardanlabs.com/blog/2018/08/scheduling-in-go-part1.html . (список рассылки, вероятно, лучшее место для поиска помощи с текущей реализацией Go).

3. Возможно, мне следовало сформулировать это лучше. Я хотел спросить, что если epoller — это просто цикл событий, как часто это вызывает epoll_wait . Блокирует ли вызов на неопределенный срок, пока не произойдет событие. И как только epoll_wait возвращается, немедленно вызывается следующий экземпляр epoll_wait