Sobes.tech
Junior

Горутинҳо чистанд?

sobes.tech AI

Ҷавоб аз AI

Легкие ағындар орындалуы, оларды іске қосу орталығы басқарған. Олар функция шақырудан бұрын go кілт сөзін пайдаланып жасалады.

Негізгі сипаттамалар:

  • Аз жад тұтыну: Горутина кішкентай стекпен (әдетте 2 КБ) басталады, ол динамикалық түрде ұлғайту немесе азайтуға болады.
  • Жылдамырақ құру: Горутина құру жүйелік ағынды құруға қарағанда әлдеқайда жылдам.
  • Жүйелік ағындарда мультиплексинг: Көптеген горутиндер Go жоспарлаушысы арқылы аз жүйелік ағындарға мультиплексорлана алады.
  • Ынтымақтастықты жоспарлау: Горутинадар алдын ала тоқтатылмайды; олар ерікті түрде жоспарлаушыға бақылауды береді (мысалы, блоктау шақыруларында немесе ашық runtime.Gosched() шақыруларында).

Құру мысалы:

package main

import (
	"fmt"
	"time"
)

func sayHello() {
	fmt.Println("Горутинадан сәлем!")
}

func main() {
	go sayHello() // sayHello-ды горутин ретінде іске қосу
	fmt.Println("Негізгі функциядан сәлем!")
	time.Sleep(1 * time.Second) // Негізгі функцияның горутиннен бұрын аяқталмауын қамтамасыз ету үшін
}

Жіптермен салыстыру:

Ерекшелік Go горутиндері Операциялық жүйе жіптері
Басқару Go орындалу орталығы Операциялық жүйе
Жад тұтыну Төмен, динамикалық стек Жоғары, тұрақты стек
Құру Жылдам Баяу
Жоспарлау Ынтымақтастықпен Алдын ала тоқтату
Синхрондау Каналдар, sync пакеті Мьютекстер, ОС семафорлары