Назад к вопросам
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)
}
Если нужно гарантировать, что запись не блокируется, можно использовать буферизированный канал. Таким образом, блокировки вручную не нужны, так как канал обеспечивает синхронизацию.