Sobes.tech
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.