Junior — Middle
Je možné priradiť vykonávanie gorutiny ku konkrétnemu systémovému vláknu?
sobes.tech AI
Odpoveď od AI
V jazyku Go (Golang) nie sú gorutiny viazané na konkrétne systémové vlákna. Plánovač Go sám rozdeľuje gorutiny medzi vlákna OS pre efektívne využitie zdrojov.
Ak je však potrebné vykonať kód v kontexte konkrétneho vlákna (napríklad na interakciu s knižnicou v C, ktorá vyžaduje volania z jedného vlákna), môžete použiť funkciu runtime.LockOSThread(). Táto funkcia pripne aktuálnu gorutinu k systémovému vláknu, až kým sa nevolá runtime.UnlockOSThread().
Príklad:
import (
"runtime"
)
func main() {
runtime.LockOSThread()
defer runtime.UnlockOSThread()
// kód, ktorý má byť vykonávaný v jednom systémovom vlákne
}
V bežnej praxi nie je potrebné ani odporúčané viazať gorutinu na vlákno, pretože to znižuje efektívnosť plánovača.