> Можно ли шарить данные между потоками (Go)
Уровень: senior · Роль: backend · Язык: Go · Категория: Технические вопросы
Компании: Avito
Стек: Go
> Пример ответа
Да, в Go данные между горутинами (легковесными потоками) можно разделять, но это требует осторожности. Основной принцип Go - "не общайтесь через разделяемую память; разделяйте память через общение". Это означает, что предпочтительный способ - использовать каналы (channels) для передачи данных между горутинами, что обеспечивает безопасность без явных блокировок.
Однако, если необходимо разделять данные напрямую (например, для производительности), используйте примитивы синхронизации из пакета sync, такие как Mutex или RWMutex. Например:
GOvar mu sync.Mutexvar sharedData intfunc writer() {mu.Lock()sharedData = 42mu.Unlock()}func reader() {mu.Lock()val := sharedDatamu.Unlock()fmt.Println(val)}
Также можно использовать атомарные операции из sync/atomic для простых типов (int, bool, указатели). Важно помнить, что разделение данных без синхронизации приводит к гонкам данных (data race), которые можно обнаружить с помощью флага -race при запуске тестов или сборки. В Go принято минимизировать разделяемое состояние и отдавать предпочтение каналам для передачи владения данными.
> Похожие задачи по Go
Как обезопасить взаимодействие микросервисов при использовании REST или gRPC
Что нужно помнить при добавлении элементов в слайс Go без знания точного размера
Как спроектировать систему url shortener на уровне микросервисов
Как уведомить горутины в Go о необходимости завершения при получении первого результата
> Похожие задачи по backend
Как обезопасить взаимодействие микросервисов при использовании REST или gRPC
Что нужно помнить при добавлении элементов в слайс Go без знания точного размера
Как спроектировать систему url shortener на уровне микросервисов
Как уведомить горутины в Go о необходимости завершения при получении первого результата
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью