Sobes.tech
Junior — Middle

Možete li objasniti šta je uslovna promenljiva sync.Cond u jeziku Go i zašto se koristi?

sobes.tech АИ

Одговор од АИ

U jeziku Go, sync.Cond je struktura koja implementira uslovnu promenljivu, korišćenu za sinhronizaciju gorutina. Omogućava jednoj ili više gorutina da čekaju na ispunjenje određenog uslova i da obaveste druge gorutine da se taj uslov promenio.

Glavne metode sync.Cond:

  • Wait() — blokira trenutnu gorutinu dok druga gorutina ne pozove Signal() ili Broadcast().
  • Signal() — budi jednu gorutinu koja čeka na uslovnu promenljivu.
  • Broadcast() — budi sve gorutine koje čekaju na uslovnu promenljivu.

Primer upotrebe:

var mu sync.Mutex
cond := sync.NewCond(&mu)

// Gorutina koja čeka signal
go func() {
    mu.Lock()
    cond.Wait() // čeka na signal
    // nakon buđenja, izvršava radnje
    mu.Unlock()
}()

// Gorutina koja šalje signal
mu.Lock()
cond.Signal() // budi jednu gorutinu
mu.Unlock()

Na ovaj način, sync.Cond pomaže u koordinaciji rada više gorutina koje čekaju da se ispune određeni uslovi.