Sobes.tech
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.