Junior — Middle
Оё дар лоиҳахоятон механизми ҳамоҳангсозии бо sync.Cond истифода бурдаед?
sobes.tech AI
Ҷавоб аз AI
Дар лоиҳаҳои Go, ман sync.Cond-ро барои ташкил кардани интизорӣ ва огоҳӣ байни goroutine-ҳо истифода мекардам, вақте ки лозим буд, ки ҳамоҳангсозии шартиро амалӣ созем. Масалан, вақте ки як goroutine бояд интизор шавад, то дигаре як амали муайянро иҷро кунад ё ҳолатро тағир диҳад.
Масали истифодаи sync.Cond:
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() // огоҳӣ додан ба goroutine интизор
mu.Unlock()
}()
mu.Lock()
for !ready {
cond.Wait() // интизор сигнал
}
fmt.Println("Goroutine тайёр")
mu.Unlock()
}
Ин усул барои назорати дақиқи вазъ ва ҳамоҳангсозӣ, ки аз истифодаи каналҳо фарқ мекунад, муфид аст.