Таймеры в Go (time.After, time.Timer, time.Ticker) реализованы как runtime timers. С Go 1.14 каждый P имеет свой timer heap (min-heap), до этого был один глобальный heap с мьютексом — bottleneck. Когда таймер срабатывает, рантайм вызывает callback (обычно отправку в канал). Шедулер проверяет таймеры при каждом проходе scheduling loop и при возврате из netpoller. Это означает, что таймеры не гарантируют точность до наносекунды — они срабатывают при первой возможности после дедлайна.
Как работает timer в Go runtime?
Senior
347 просмотровAFK Offer AI
Как генерировать Go код из proto?