Sobes.tech
Junior — Middle

Go tilida goroutinlar yordamida parallel va asinxron hisoblashlarni tashkil qilish uchun qanday yondashuvlar va vositalar mavjud?

sobes.tech AI

AIdan javob

Go tilida parallel va asinxron hisoblashlarni tashkil qilish uchun goroutinlar (goroutinlar) ishlatiladi — yengil oqimlar bo'lib, ular go kalit so'zi yordamida ishga tushiriladi.

Asosiy vositalar va yondashuvlar:

  • Goroutinlar: operatsion tizim oqimlarini aniq boshqarmasdan funksiyalarni parallel bajarishga imkon beradi.
  • Kanal (channels): goroutinlar o'rtasida xavfsiz ma'lumot almashinuvi va sinxronizatsiya uchun ishlatiladi.
  • select: kanal operatsiyalarini kutish uchun operator, bir nechta manbadan ma'lumotlarni ishlash imkonini beradi.

Misol:

package main

import (
    "fmt"
    "time"
)

func worker(id int, ch chan<- string) {
    time.Sleep(time.Second) // ishni taqlid qilish
    ch <- fmt.Sprintf("Ishchi %d tugadi", 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)
    }
}

Ushbu misolda, uchta goroutin parallel ravishda ishlaydi va kanal natijalarni olish uchun ishlatiladi.

Shunday qilib, goroutinlar va kanallar kombinatsiyasi Go tilida parallel va asinxron hisoblashlarni tashkil qilishning asosiy usulidir.