Назад к вопросам
Холодильник.ру
Junior — Middle
80
Можно ли закрепить выполнение горутины за конкретным системным потоком?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В Go (Golang) горутины не привязываются к конкретным системным потокам. Планировщик Go самостоятельно распределяет горутины по потокам ОС для эффективного использования ресурсов.
Однако, если есть необходимость выполнить код в контексте конкретного потока (например, для взаимодействия с C-библиотекой, которая требует вызовов из одного потока), можно использовать функцию runtime.LockOSThread(). Она закрепляет текущую горутину за системным потоком до вызова runtime.UnlockOSThread().
Пример:
import (
"runtime"
)
func main() {
runtime.LockOSThread()
defer runtime.UnlockOSThread()
// код, который должен выполняться в одном системном потоке
}
Но в обычной практике закреплять горутину за потоком не нужно и не рекомендуется, так как это снижает эффективность планировщика.