Оё метавонед принсипи кориравии усулро, ки асос ёфтааст ба рӯйдодҳо, ва чӣ гуна дар барномасозӣ истифода мешавад, шарҳ диҳед?
sobes.tech AI
Ҷавоб аз AI
Раванди, асос ёфтаи рӯйдодҳо (event-driven), маънои онро дорад, ки барнома ба рӯйдодҳои муайян — тағирёбии ҳолат, амалҳои корбар, паёмҳо ва ғайра — вокуниш нишон медиҳад. Ба ҷои иҷрои пайдарпайи коди, мантиқ атрофи коркарди ин рӯйдодҳо сохта мешавад.
Дар барномасозӣ, ин аксар вақт тавассути истеҳсоли рӯйдодҳо (emit) ва обуна шудан ба онҳо (subscribe/listen) амалӣ карда мешавад. Вақте ки рӯйдод рӯй медиҳад, корбарони дахлдор даъват карда мешаванд.
Дар Go, ин равиш аксар вақт бо истифода аз каналҳо (channels) ва goroutines иҷро мешавад. Масалан, як goroutine метавонад рӯйдодҳоро ба канал фиристад, дар ҳоле ки дигар каналро гӯш мекунад ва ба рӯйдодҳо вокуниш медиҳад.
Масалан:
package main
import (
"fmt"
"time"
)
func eventProducer(events chan<- string) {
for i := 1; i <= 5; i++ {
events <- fmt.Sprintf("Рӯйдод %d", i)
time.Sleep(time.Second)
}
close(events)
}
func eventConsumer(events <-chan string) {
for event := range events {
fmt.Println("Коркарди", event)
}
}
func main() {
events := make(chan string)
go eventProducer(events)
eventConsumer(events)
}
Ин равиш қобилияти эластикӣ ва масштабшавии барномаҳоро зиёд мекунад, махсусан дар системаҳое, ки коркарди асинхронӣ доранд.