Junior
Какви други начини за синхронизиране на горутините съществуват в Go освен каналите?
sobes.tech AI
Отговор от AI
Освен каналите, в Go за синхронизиране на горутините могат да се използват:
- sync.WaitGroup — позволява да се изчака завършването на група горутини.
- sync.Mutex — мютекс за защита на споделени ресурси от едновременен достъп.
- sync.RWMutex — мютекс с разделяне на четене и писане.
- sync.Cond — условна променлива за уведомяване на горутините за настъпване на събитие.
- атомарни операции от пакета
sync/atomic— за атомарни операции с променливи без блокировки.
Пример за използване на WaitGroup:
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
// работа на горутината
}()
wg.Wait() // чака завършването на всички горутини