Junior — Middle
Layihələrinizdə sync.Cond ilə sinxronizasiya mexanizmi istifadə etdinizmi?
sobes.tech Süni İntellekt
AI-dan cavab
Go layihələrində, goroutine-lər arasında gözləmə və bildiriş təşkil etmək üçün sync.Cond istifadə etmişəm, xüsusən şərti sinxronizasiya həyata keçirilməlidirsə. Məsələn, bir goroutine digərinin müəyyən bir əməliyyatı yerinə yetirməsini və ya vəziyyəti dəyişməsini gözləməlidir.
sync.Cond istifadə nümunəsi:
package main
import (
"fmt"
"sync"
"time"
)
func main() {
mu := sync.Mutex{}
cond := sync.NewCond(&mu)
ready := false
go func() {
time.Sleep(time.Second)
mu.Lock()
ready = true
cond.Signal() // gözləyən goroutine-ə bildiriş
mu.Unlock()
}()
mu.Lock()
for !ready {
cond.Wait() // siqnalı gözləyir
}
fmt.Println("Goroutine hazır")
mu.Unlock()
}
Bu yanaşma, kanallardan daha incə tənzimləmə ilə vəziyyət və sinxronizasiyanı idarə etmək lazım olduqda faydalıdır.