Sobes.tech
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.