Sobes.tech
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 мебошад.