Junior — Middle
Ինչպե՞ս ապահովել տվյալների անվտանգ գրառում մի քանի goroutine-ներից առանց բլոկավորման օգտագործման։
sobes.tech AI
Պատասխան AI-ից
Go լեզվում, անվտանգ կերպով տվյալներ գրելու համար մի քանի goroutine-ներից միաժամանակ, սովորաբար բավական է օգտագործել հենց ալիքին, քանի որ Go- ի ալիքները ստանդարտորեն անվտանգ են միաժամանակյա գործառույթների համար:
Օրինակ՝
ch := make(chan int)
// Գրանցում ալիքին մի քանի goroutine-ներից
for i := 0; i < 5; i++ {
go func(val int) {
ch <- val // անվտանգ գրանցում
}(i)
}
// Կարդալ ալիքից
for i := 0; i < 5; i++ {
fmt.Println(<-ch)
}
Եթե ուզում եք ապահովել, որ գրանցումը չի բլոկվի, կարող եք օգտագործել բուֆերային ալիք։ Այս կերպ, ձեռքով լոկերներ չեն անհրաժեշտ, քանի որ ալիքն ապահովում է սինխրոնիզացիան։