Sobes.tech
Назад к вопросам
Senior
1

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

Компании, где спрашивали
X5

Ответ от нейросети

sobes.tech AI

В 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)
}

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