Sobes.tech
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-ների ճիշտ օգտագործմամբ։