Sobes.tech
Назад к вопросам
Junior — Middle
81

Как обеспечить безопасную запись данных в канал из нескольких горутин без использования блокировки?

Ответ от нейросети

sobes.tech AI

В Go для безопасной записи данных в канал из нескольких горутин без использования блокировок обычно достаточно использовать сам канал, так как каналы в Go являются потокобезопасными по умолчанию.

Пример:

ch := make(chan int)

// Запись в канал из нескольких горутин
for i := 0; i < 5; i++ {
    go func(val int) {
        ch <- val // безопасная запись
    }(i)
}

// Чтение из канала
for i := 0; i < 5; i++ {
    fmt.Println(<-ch)
}

Если нужно гарантировать, что запись не блокируется, можно использовать буферизированный канал. Таким образом, блокировки вручную не нужны, так как канал обеспечивает синхронизацию.