Junior — Middle
Кадом усулҳо ва асбобҳо дар Go барои ташкил кардани ҳисобҳои параллелӣ ва асинхронӣ бо goroutines истифода мешаванд?
sobes.tech AI
Ҷавоб аз AI
Дар Го барои ташкил кардани ҳисобҳои параллелӣ ва асинхронӣ, гирутинҳо (goroutines) истифода мешаванд — равандҳои сабук, ки бо калидвожа go оғоз мешаванд.
Асосӣ асбобҳо ва муносибатҳо:
- Горутинҳо: имкон медиҳанд, ки функсияҳоро параллел иҷро кардан бе идоракунии ошкороии сӯроғи системаи оператсионӣ.
- Каналуҳо (channels): барои мубодилаи бехатари маълумот байни горутинҳо ва барои ҳамоҳангсозӣ истифода мешаванд.
- select: оператор барои интизор шудан ба чанд амалиёт дар каналҳо, имкон медиҳад, ки маълумотҳоро аз чанд манбаъ коркард кунад.
Масалан:
package main
import (
"fmt"
"time"
)
func worker(id int, ch chan<- string) {
time.Sleep(time.Second) // симуляцияи кор
ch <- fmt.Sprintf("Корманди %d анҷом ёфт", id)
}
func main() {
ch := make(chan string)
for i := 1; i <= 3; i++ {
go worker(i, ch)
}
for i := 1; i <= 3; i++ {
msg := <-ch
fmt.Println(msg)
}
}
Дар ин мисол, се горутин параллел иҷро мешаванд ва канал барои гирифтани натиҷаҳо истифода мешавад.
Бинобар ин, омехтаи горутинҳо ва каналҳо асосӣ барои ташкил кардани ҳисобҳои параллелӣ ва асинхронӣ дар Go мебошад.