Junior — Middle
Чӣ гуна коркарди параллелӣ ва пайдарпайи вазифаҳо дар забони Go амалӣ карда мешавад?
sobes.tech AI
Ҷавоб аз AI
Go тилинде тапшырмаларды параллелдүү иштетүү goroutine'лер аркылуу ишке ашырылат — бул жеңил жиптер, алар go ачкыч сөзү менен ишке киргизилет. Goroutine функцияны асинхрондуу түрдө иштетүү үчүн ишке киргизсе болот, жана ал башка goroutine'лер менен бирге параллелдүү иштейт.
Тизмектүү иштетүү — бул go колдонбостон функцияларды чакыруу, анда тапшырмалар бири-экиден аткарылат.
Параллелдүү иштетүүнүн мисалы:
package main
import (
"fmt"
"time"
)
func тапшырма(ид int) {
fmt.Printf("Тапшырма %d башталды\n", ид)
time.Sleep(time.Second)
fmt.Printf("Тапшырма %d аяктады\n", ид)
}
func main() {
for i := 1; i <= 3; i++ {
go тапшырма(i) // goroutine'ду ишке киргизүү
}
time.Sleep(2 * time.Second) // goroutine'дердин аякташын күтүү
}
Бул мисалда үч тапшырма параллелдүү башталат. Эгер go алып салынса, тапшырмалар кезек-кезеги менен аткарылат.
Goroutine'дерди синхрондоштуруу жана башкаруу үчүн көбүнчө каналдар (channels) жана sync.WaitGroup колдонулат.