Sobes.tech
Senior

¿La lectura de un canal vacío bloquea el flujo de ejecución?

sobes.tech AI

Respuesta de la IA

Да, чтение из пустого канала блокирует поток выполнения до тех пор, пока в канал не будет записано значение.

Это поведение характерно для многих языков программирования с поддержкой каналов (например, Go). Если канал пуст, операция чтения ожидает появления данных, тем самым блокируя текущий горутин или поток.

Пример на Go:

ch := make(chan int)

// Чтение из канала в отдельной горутине
go func() {
    val := <-ch // блокируется, пока кто-то не запишет в ch
    fmt.Println(val)
}()

// Запись в канал
ch <- 42 // разблокирует чтение

Таким образом, чтение из пустого канала — это механизм синхронизации между потоками.