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 pozoveSignal()iliBroadcast().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.