Sobes.tech
Junior — Middle

Ar galima gorutinos vykdymą susieti su konkrečiu sisteminiu srautu?

sobes.tech AI

Atsakymas iš AI

Go (Golang) kalboje, goroutine'ės nėra susietos su konkrečiais sisteminiais siūlais. Go planuotojas pats paskirsto goroutine'ęs tarp OS siūlų efektyviam išteklių naudojimui.

Tačiau, jei reikia vykdyti kodą konkrečioje siūlo kontekste (pavyzdžiui, sąveikaujant su C biblioteka, kuri reikalauja iškvietimų iš vieno siūlo), galite naudoti funkciją runtime.LockOSThread(). Ji pririša esamą goroutine prie sisteminio siūlo iki tol, kol bus iškviesta runtime.UnlockOSThread().

Pavyzdys:

import (
    "runtime"
)

func main() {
    runtime.LockOSThread()
    defer runtime.UnlockOSThread()
    // kodas, kuris turi būti vykdomas viename sisteminiame siūle
}

Tačiau kasdienėje praktikoje, nėra būtina ir nerekomenduojama pririšti goroutine prie siūlo, nes tai mažina planuotojo efektyvumą.