Junior
Ի՞նչ են գորուտինները։
sobes.tech AI
Պատասխան AI-ից
Հ Lightweight գործարկման թելեր, որոնք կառավարում է Go գործարկման միջավայրը: Դրանք ստեղծվում են go բանալի բառով՝ նախքան ֆունկցիայի կանչելը:
Հիմնական հատկանիշներ՝
- Փոքր հիշողության սպառում: Գործարկման թելը սկսվում է փոքր ստեկով (հաճախ 2 ԿԲ), որը կարող է դինամիկ կերպով մեծանալ կամ փոքրանալ:
- Արագ ստեղծում: Գործարկման թելը ստեղծելը շատ ավելի արագ է, քան համակարգային թել ստեղծելը:
- Մուլտիպլեքսավորում համակարգային թելերի վրա: Շատ գործարկման թելեր կարող են մուլտիպլեքսավորվել ավելի քիչ համակարգային թելերի վրա Go պլանավորողի կողմից:
- Կոոպերատիվ պլանավորում: Գործարկման թելերը չեն խզվում կանխամտածված; նրանք կամավոր փոխանցում են վերահսկողությունը պլանավորողին (օրինակ, բլոկավորող կանչերի կամ բացահայտ
runtime.Gosched()կանչերի ժամանակ):
Նմուշ ստեղծելու համար՝
package main
import (
"fmt"
"time"
)
func sayHello() {
fmt.Println("Բարև գործարկման թելից!")
}
func main() {
go sayHello() // գործարկում է որպես գործարկման թել
fmt.Println("Բարև հիմնական ֆունկցիայից!")
time.Sleep(1 * time.Second) // որպեսզի հիմնական ֆունկցիան ավարտվի նախքան գործարկման թելը
}
Համեմատություն թելերի հետ՝
| Գծանշում | Go գործարկման թելերը | Օպերացիոն համակարգի թելերը |
|---|---|---|
| Կառավարում | Go գործարկման միջավայր | Օպերացիոն համակարգ |
| Հիշողության սպառում | Նվազ, դինամիկ ստեկ | Բարձր, ֆիքսված ստեկ |
| Ստեղծում | Արագ | Աշխատանքային արագություն |
| Պլանավորում | Կոոպերատիվ | Նախապես խզում |
| Սինխրոնիզացիա | Չանալներ, sync փաթեթը | Մյուտեքսներ, օՍ սեմաֆորներ |