Junior — Middle
Можете ли да обясните концепцията за леки нишки и техните разлики от обикновените нишки за изпълнение?
sobes.tech AI
Отговор от AI
Леките потоци (goroutines в Go) са абстракция за паралелно изпълнение на код, която е по-лека и по-ефективна по ресурси от обикновените системни потоци.
Разлики:
- Ресурси: goroutines заемат много по-малко памет (обикновено няколко килобайта), докато системният поток изисква много повече (обикновено мегабайти).
- Планиране: goroutines се планират от планировчика на Go вътре в процеса, а не от операционната система, което позволява бързо превключване между тях.
- Създаване: стартирането на goroutine е много бързо и евтино, може да се създадат хиляди или дори милиони едновременно.
Пример за създаване на goroutine:
func sayHello() {
fmt.Println("Здравей от goroutine")
}
func main() {
go sayHello() // стартира функция в отделна goroutine
time.Sleep(time.Second) // чака, за да се изпълни goroutine
}
По този начин, леките потоци позволяват ефективно използване на паралелизма без големи разходи.