Go 1.14 добавил asynchronous preemption — вытеснение горутин через сигналы ОС (SIGURG на Unix). До этого горутина с tight loop (for i := 0; ; i++) без вызова функций никогда не отдавала управление, блокируя и GC, и другие горутины на том же P. Теперь sysmon обнаруживает такие горутины (>10ms на одном P) и шлёт сигнал. Обработчик сохраняет регистры, вставляет вызов asyncPreempt в стек горутины и передаёт управление шедулеру. Это сделало Go по-настоящему preemptive.
Как Go 1.14 изменил preemption?
Senior
379 просмотровAFK Offer AI
Как работать с temporary files?