Junior
Ի՞նչ է ապահովում Go-ում թելերի անվտանգությունը (thread safety):
sobes.tech AI
Պատասխան AI-ից
Go-յի համաժամանակյա անվտանգությունը ապահովվում է մի քանի մեխանիզմներով՝
- Goroutines — թեթև շերտեր, որոնք թույլ են տալիս կատարել կոդը միաժամանակ։
- Կանալներ — հիմնական գործիքը՝ տվյալների անվտանգ փոխանակման համար goroutine-ների միջև առանց ընդհանուր փոփոխականների օգտագործման։
- sync փաթեթ — պարունակում է սինխրոնիզացիայի primitives, ինչպիսիք են
Mutex՝ критիկական հատվածների փակման համար,RWMutex՝ ընթերցման և գրելու համար բաժանելու համար, ևWaitGroup՝ սպասելու խմբի goroutine-ների ավարտին։
Օրինակ՝ mutex-ով ընդհանուր ռեսուրսը պաշտպանելու համար.
import (
"sync"
)
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
Այսպիսով՝ Go-յի համաժամանակյա անվտանգությունը հասնում է goroutine-ների, կանալների և sync փաթեթի primitives-ների ճիշտ օգտագործմամբ։