Sobes.tech
Junior

Goroutinlər nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Go icra axını, Go icra mühiti tərəfindən idarə olunan yüngül icra axınlarıdır. Onlar funksiyanı çağırmadan əvvəl go açar sözü ilə yaradılır.

Əsas xüsusiyyətlər:

  • Daha az yaddaş istifadəsi: Goroutine kiçik yığım ilə başlayır (adətən 2 KB), və dinamik olaraq artırıla və ya azaldıla bilər.
  • Daha sürətli yaradılma: Goroutine yaratmaq sistem ipindən çox daha sürətlidir.
  • Sistem ipləri üzərində çoxlama: Bir çox goroutine, Go planlayıcısı tərəfindən daha az sistem ipinə çoxala bilər.
  • Əməkdaş planlaşdırma: Goroutine-lər zorla kəsilmir; onlar könüllü olaraq planlayıcıya nəzarəti verir (məsələn, bloklayan çağırışlar və ya açıq runtime.Gosched() çağırışları zamanı).

Yaradıcılıq nümunəsi:

package main

import (
	"fmt"
	"time"
)

func sayHello() {
	fmt.Println("Goroutindən salam!")
}

func main() {
	go sayHello() // sayHello-u goroutine kimi işə salır
	fmt.Println("Əsas funksiyadan salam!")
	time.Sleep(1 * time.Second) // Əsas funksiyanın, goroutine-dən əvvəl bitməməsini təmin etmək üçün
}

İp ilə müqayisə:

Xüsusiyyət Go Goroutine-ləri OS ipləri
İdarəetmə Go icra mühiti Əməliyyat sistemi
Yaddaş istifadəsi Aşağı, dinamik yığım Yüksək, statik yığım
Yaradılma Sürətli Yavaş
Planlaşdırma Əməkdaşlıqda Preemptiv
Sinxronizasiya Kanallar, sync paketi Mutexlər, OS semaforları