Junior
Какво в Go осигурява безопасност на нишките (thread safety)?
sobes.tech AI
Отговор от AI
Безопасността при паралелно изпълнение в Go се осигурява чрез няколко механизма:
- Goroutines — леки нишки, които позволяват изпълнение на код паралелно.
- Канали — основният инструмент за безопасен обмен на данни между goroutines без използване на споделени променливи.
- Пакет sync — съдържа примитиви за синхронизация като
Mutexза блокиране на критични секции,RWMutexза разделяне на блокировки за четене и писане иWaitGroupза изчакване на завършването на група goroutines.
Пример за използване на mutex за защита на споден ресурс:
import (
"sync"
)
var mu sync.Mutex
var брояч int
func увеличи() {
mu.Lock()
defer mu.Unlock()
брояч++
}
По този начин, безопасността при паралелно изпълнение в Go се постига чрез правилното използване на goroutines, канали и примитиви за синхронизация от пакета sync.