Junior — Middle
Bir neçə goroutine-dən kanal üzərində məlumatların təhlükəsiz yazılmasını necə təmin etmək olar, kilidləmədən?
sobes.tech Süni İntellekt
AI-dan cavab
Go dilində, bir neçə goroutine-dən kanal vasitəsilə məlumatların təhlükəsiz şəkildə yazılması üçün adətən kilidlər istifadə etmədən, sadəcə kanaldan istifadə etmək kifayətdir, çünki Go-da kanallar standart olaraq çoxluq təhlükəsizdir.
Nümunə:
ch := make(chan int)
// Bir neçə goroutine-dən kanala yazma
for i := 0; i < 5; i++ {
go func(val int) {
ch <- val // təhlükəsiz yazma
}(i)
}
// Kanaldan oxuma
for i := 0; i < 5; i++ {
fmt.Println(<-ch)
}
Əgər yazmanın bloklanmamasını təmin etmək istəyirsinizsə, tamponlu kanal istifadə edə bilərsiniz. Bu halda, əl ilə kilidlər lazım deyil, çünki kanal sinxronizasiya təmin edir.