Signal-based preemption — механизм Go 1.14+ для вытеснения горутин через SIGURG. Когда sysmon видит, что горутина выполняется слишком долго, рантайм посылает SIGURG треду, на котором она бежит. Обработчик сигнала проверяет, можно ли безопасно прервать (safe point), сохраняет контекст и вставляет asyncPreempt frame в стек. SIGURG выбран потому что это один из немногих сигналов, который не используется другими библиотеками и безопасен для перехвата. На Windows используется SuspendThread/GetThreadContext.
Что такое signal-based preemption?
Senior
214 просмотровAFK Offer AI
Как создать GitHub Release?