Назад к вопросам
Yadro
Middle
6
Как горутины могут общаться между собой? Какие способы синхронизации существуют в Go?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Горутины в Go могут общаться между собой с помощью каналов (channels). Каналы позволяют передавать значения между горутинами, обеспечивая синхронизацию и обмен данными.
Основные способы синхронизации в Go:
- Каналы (channels) — позволяют безопасно передавать данные между горутинами и автоматически синхронизируют их.
- Mutex (sync.Mutex) — используется для защиты общих ресурсов от одновременного доступа.
- WaitGroup (sync.WaitGroup) — помогает ждать завершения группы горутин.
- Cond (sync.Cond) — условные переменные для более сложной синхронизации.
Пример использования канала для общения между горутинами:
package main
import (
"fmt"
"time"
)
func worker(ch chan string) {
time.Sleep(time.Second)
ch <- "готово"
}
func main() {
ch := make(chan string)
go worker(ch)
msg := <-ch
fmt.Println("Работа горутины:", msg)
}