Junior
20
Что в Go обеспечивает потокобезопасность (thread safety)?
Companies where asked
01.tech
Answer from AI
sobes.tech AI
В Go потокобезопасность обеспечивается несколькими механизмами:
- Горутины (goroutines) — легковесные потоки, которые позволяют выполнять код параллельно.
- Каналы (channels) — основной инструмент для безопасного обмена данными между горутинами без использования общих переменных.
- Пакет sync — содержит примитивы синхронизации, такие как
Mutex(мьютекс) для блокировки критических секций,RWMutexдля разделения блокировок на чтение и запись,WaitGroupдля ожидания завершения группы горутин.
Пример использования мьютекса для защиты общего ресурса:
import (
"sync"
)
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
Таким образом, потокобезопасность в Go достигается через правильное использование горутин, каналов и примитивов синхронизации из пакета sync.