Sobes.tech
Junior — Middle

Go тилинде goroutine'лер кандай ишке ашырылат жана башкарылат?

sobes.tech AI

AIден жооп

Go'da gorutinler — bu Go ish vaqti tomonidan boshqariladigan yengil oqimlar bo'lib, operatsion tizim tomonidan emas. Ular minimal resurslar bilan konkurent kod yozishga imkon beradi.

Gorutinlarni amalga oshirish va boshqarishning asosiy jihatlari:

  • Yaratish: Gorutina go kalit so'zi yordamida funksiyani chaqirishdan oldin boshlanadi.
  • Rejalashtiruvchi: Go ning o'z rejalashtiruvchisi bor, u gorutinlarni tizim iplariga taqsimlaydi (M:N rejalashtirish).
  • Yığım: Har bir gorutina dinamik yığım bilan ta'minlangan bo'lib, ehtiyojga qarab o'sishi yoki qisqarishi mumkin, boshlang'ichda bir necha kilobayt.
  • Aloqa: Gorutinlar o'rtasida sinxronizatsiya va ma'lumot almashish uchun kanallar ishlatiladi.

Gorutina yaratish misoli:

func sayHello() {
    fmt.Println("Gorutindan salom")
}

func main() {
    go sayHello() // gorutina ishga tushiradi
    time.Sleep(time.Second) // kutadi, gorutina bajarilishini ta'minlash uchun
}

Shu tarzda, gorutinlar minimal xarajatlar bilan kodni parallel ravishda bajarishning samarali usulidir.