Что такое signal-based preemption?

Senior
214 просмотров
AFK Offer AI

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

Следующий вопрос

Как создать GitHub Release?