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 пакеті | Мьютекстер, ОС семафорлары |