Горутини чӣ ҳастанд ва онҳо дар дохил чӣ гуна сохта шудаанд?
sobes.tech AI
Ҷавоб аз AI
Goroutine-ҳо Go тилида сабуўр иҷрои сӯзишларидир ва улар тилнинг ишга тушириш муҳити томонидан бошқарилади, операцион тизим томонидан эмас. Системавий сӯзишлардан фарқли ўлароқ, goroutine-лар жуда кичик стекга (бир неча килобайтдан бошланади) эга ва динамик равишда кенгайиши мумкин.
Goroutine ичида, у g структураси билан тасвирланади, у ҳолат, стек, рўйхатлар ва бошқа маълумотларни ўз ичига олади. Go-нинг планлаштирувчиси (scheduler) goroutine-лар орасида ўтишни M:N модели орқали бошқаради, бу ерда M — системавий сӯзишлар (OS сӯзишлари), N — goroutine-лар.
Планлаштирувчи goroutine-ларни системавий сӯзишларга тақсимлайди, бу кўп процессорлиликдан самарали фойдаланишга имкон беради ва OS сӯзишларини яратиш ва ўтказиш учун қўшимча харажатларни олдини олади. Бу ишга тушириш муҳитида ҳамкорликдаги ва олдиндан олдин ўтказишли кўп вазифалик орқали амалга оширилади.
Goroutine яратиш мисоли:
func sayHello() {
fmt.Println("Goroutine-дан салом")
}
func main() {
go sayHello() // goroutine ни ишга тушириш
time.Sleep(time.Second) // goroutine ни бажариш учун вақт бериш
}