Junior — Middle
Тавзеҳ диҳед дар бораи консепсияи рақобат дар забони барномасозии Go ва нақши он дар таҳияи барномаҳои параллелӣ
sobes.tech AI
Ҷавоб аз AI
Дар забонҳои Go, рақобат (concurrency) қобилияти барнома барои иҷрои чандин вазифа дар як вақт аст, ки захираҳои протсессорро самаранок истифода мебарад. Дар забони Go, ин тавассути горутинҳо, ки нӯгҳои сабук мебошанд ва бо калидвожа go оғоз мешаванд, амалӣ мешавад.
Рақобат имкон медиҳад, ки барномаҳои параллелӣ нависанд, ки дар онҳо қисмҳои гуногуни коди баробар иҷро мешаванд, ки ин ба иҷроиш ва ҷавобгӯии барномаҳо такмил медиҳад.
Барои ҳамоҳангсозӣ ва мубодилаи маълумот байни горутинҳо, каналҳо (channels) истифода мешаванд, ки муоширати бехатарро бе бастани ошкоро таъмин мекунанд.
Масалан:
package main
import (
"fmt"
"time"
)
func worker(id int) {
fmt.Printf("Корманди %d оғоз мешавад\n", id)
time.Sleep(time.Second)
fmt.Printf("Корманди %d анҷом меёбад\n", id)
}
func main() {
for i := 1; i <= 3; i++ {
go worker(i) // оғоз кардани горутин
}
time.Sleep(2 * time.Second) // интизорӣ барои анҷоми горутинҳо
}
Дар ин мисол, се горутин ҳамзамон иҷро мешаванд, ки рақобатро дар Go нишон медиҳанд.