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