Junior — Middle
Може ли извршавање горутине да буде везано за одређени системски ток?
sobes.tech АИ
Одговор од АИ
U Go (Golang), goroutine-ovi nisu povezani sa određenim sistemskim nitima. Planer Go samostalno raspoređuje goroutine-ove po OS nitima radi efikasnog korišćenja resursa.
Međutim, ako je potrebno izvršiti kod u kontekstu određene niti (na primer, za interakciju sa C bibliotekom koja zahteva pozive iz jedne niti), možete koristiti funkciju runtime.LockOSThread(). Ona vezuje trenutnu goroutine za sistemsku nit dok se ne pozove runtime.UnlockOSThread().
Primer:
import (
"runtime"
)
func main() {
runtime.LockOSThread()
defer runtime.UnlockOSThread()
// kod koji treba da se izvrši u jednoj sistemskoj niti
}
U svakodnevnoj praksi, nije potrebno ni preporučljivo vezivati goroutine za nit, jer to smanjuje efikasnost planera.