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ı |