Junior — Middle
Жоболоруңузда sync.Cond аркылуу синхрондоштуруу механизмин колдондуңузбу?
sobes.tech AI
AIден жооп
Go долбоорлорунда, мен goroutine'лер арасында күтүүнү жана кабарлоону уюштуруу үчүн sync.Cond колдонуп келгем, шарттуу синхрондоштуруу керек болгондо. Мисалы, бир 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()
}
Бул ыкма, каналдардан айырмаланып, абал жана синхрондоштурууну так көзөмөлдөөгө мүмкүндүк берет.