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