Назад к вопросам
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)
}
Кроме того, для потокобезопасных очередей или других структур часто используют сторонние библиотеки или реализуют собственные с использованием мьютексов и каналов.