Middle+
Какво е асинхронност, паралелност и конкурентност в контекста на Go?
sobes.tech AI
Отговор от AI
В контекста на Go:
-
Асинхронност — изпълнение на операции без блокиране на основния поток, обикновено чрез горутини и канали. Позволява стартирането на задачи, които могат да се изпълняват независимо и без да чакат тяхното завършване.
-
Паралелност — едновременна изпълнение на няколко задачи на различни ядра на процесора. В Go това се постига чрез планировчика на горутините, който ги разпределя по системните нишки.
-
Конкурентност — способността на програма да управлява множество задачи, които могат да се изпълняват едновременно или последователно, осигурявайки правилен достъп до споделените ресурси.
Пример за горутина:
func worker(id int) {
fmt.Printf("Работник %d започна\n", id)
// работа
}
func main() {
for i := 1; i <= 5; i++ {
go worker(i) // асинхронно стартиране
}
time.Sleep(time.Second) // изчакване за завършване
}