Sobes.tech
Junior

Goroutinlar nima?

sobes.tech AI

AIdan javob

Go ishchi oqimlari, Go ijro muhiti tomonidan boshqariladi. Ular funksiyani chaqirishdan oldin go kalit so'zi bilan yaratiladi.

Asosiy xususiyatlar:

  • Kamroq xotira sarfi: Goroutine kichik stek bilan boshlanadi (odatda 2 KB), u dinamik ravishda oshirilishi yoki kamaytirilishi mumkin.
  • Yaratish tezligi: Goroutine yaratish tizim ipiga qaraganda ancha tezroq.
  • Tizim iplariga multiplexing: Ko'p goroutinlar Go planlashtiruvchisi tomonidan kamroq tizim iplariga multiplex qilinishi mumkin.
  • Hamkorlikda rejalashtirish: Goroutinlar oldindan to'xtatilmaydi; ular volontar ravishda rejalashtiruvchiga nazoratni topshiradi (masalan, bloklovchi chaqiruvlar yoki ochiq chaqiruvlar runtime.Gosched() bilan).

Yaratish misoli:

package main

import (
	"fmt"
	"time"
)

func sayHello() {
	fmt.Println("Goroutindan salom!")
}

func main() {
	go sayHello() // sayHello ni goroutine sifatida ishga tushurish
	fmt.Println("Asosiy funksiyadan salom!")
	time.Sleep(1 * time.Second) // Asosiy funksiyaning goroutine dan oldin tugamasligini ta'minlash uchun
}

Ip bilan taqqoslash:

Xususiyat Go Goroutinlari Operatsion tizim iplari
Boshqarish Go ijro muhiti Operatsion tizim
Xotira sarfi Past, dinamik stek Yuqori, statik stek
Yaratish Tez Sekin
Rejalashtirish Hamkorlikda Oldindan to'xtatuvchi
Sinxronizatsiya Kanallar, sync paketi Mutexlar, semaforlar OS tomonidan