Sobes.tech
Back to questions
Senior
7

Что есть в Go для параллельного и асинхронного программирования? Перечислите основные инструменты.

Companies where asked
техвил

Answer from AI

sobes.tech AI

В Go для параллельного и асинхронного программирования используются следующие основные инструменты:

  • Горутины (goroutines) — легковесные потоки, которые запускаются с помощью ключевого слова go. Они позволяют выполнять функции параллельно.

  • Каналы (channels) — механизм для обмена данными между горутинами, обеспечивающий синхронизацию и передачу сообщений.

  • Пакет sync — содержит примитивы синхронизации, такие как мьютексы (Mutex), условные переменные (Cond), группы ожидания (WaitGroup) и др.

  • Пакет context — используется для управления временем жизни горутин, отмены операций и передачи метаданных.

Пример использования горутины и канала:

ch := make(chan string)
go func() {
    ch <- "Hello from goroutine"
}()
msg := <-ch
fmt.Println(msg)

Таким образом, Go предлагает простую и эффективную модель конкурентности, основанную на CSP (Communicating Sequential Processes).