Какие потокобезопасные структуры данных в Go ты знаешь?

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

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

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

  • sync.Mutex и sync.RWMutex — для защиты доступа к обычным структурам данных.
  • sync.Map — потокобезопасная карта с оптимизациями для частых операций чтения и записи.
  • Каналы (chan) — позволяют безопасно обмениваться данными между горутинами.
  • sync.WaitGroup — для синхронизации завершения нескольких горутин.

Пример использования sync.Map:

var m sync.Map

// Запись
m.Store("key", "value")

// Чтение
if val, ok := m.Load("key"); ok {
    fmt.Println(val)
}

Кроме того, для потокобезопасных очередей или других структур часто используют сторонние библиотеки или реализуют собственные с использованием мьютексов и каналов.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее