Junior — Middle
Vai jūsu projektos esat izmantojis sinhronizācijas mehānismu ar sync.Cond?
sobes.tech AI
Atbilde no AI
Go projektos laikā es izmantoju sync.Cond, lai organizētu gaidīšanu un paziņojumu starp gorutīnām, kad būtu nepieciešama nosacīta sinhronizācija. Piemēram, kad viena gorutina gaida, kamēr otra veic noteiktu darbību vai maina stāvokli.
sync.Cond izmantošanas piemērs:
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() // paziņojam gaidošajai gorutīnai
mu.Unlock()
}()
mu.Lock()
for !ready {
cond.Wait() // gaidām signālu
}
fmt.Println("Gorutina gatava")
mu.Unlock()
}
Šī pieeja ir noderīga, ja nepieciešama smalkāka stāvokļa un sinhronizācijas kontrole nekā tikai ar kanāliem.