Назад к вопросам
Junior — Middle
81
Объясните концепцию конкуренции в языке программирования Go и её роль в разработке параллелизированных приложений
Ответ от нейросети
sobes.tech AI
В Go конкуренция (concurrency) — это способность программы выполнять несколько задач одновременно, эффективно используя ресурсы процессора. В языке Go для этого предусмотрены горутины (goroutines) — легковесные потоки, которые запускаются с помощью ключевого слова go.
Конкуренция позволяет писать параллелизированные приложения, где разные части кода выполняются одновременно, что повышает производительность и отзывчивость программ.
Для синхронизации и обмена данными между горутинами используются каналы (channels), которые обеспечивают безопасную коммуникацию без явного использования блокировок.
Пример:
package main
import (
"fmt"
"time"
)
func worker(id int) {
fmt.Printf("Worker %d starting\n", id)
time.Sleep(time.Second)
fmt.Printf("Worker %d done\n", id)
}
func main() {
for i := 1; i <= 3; i++ {
go worker(i) // запуск горутины
}
time.Sleep(2 * time.Second) // ожидание завершения горутин
}
В этом примере три горутины выполняются одновременно, демонстрируя конкуренцию в Go.