Найти тему

080 Потоковая передача данных

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

Вот пример использования каналов для потоковой передачи данных:

Go Playground - The Go Programming Language

В этом примере мы определяем две Goroutines generateData() и processData(). Горутина generateData() посылает целые числа от 1 до 10 по каналу ch, используя ch <- i, а затем засыпает на одну секунду, используя time.Sleep(time.Second). Гороутина processData() получает значения из канала с помощью for val := range ch и выводит каждое значение на консоль с помощью fmt.Printf().

В функции main() мы создаем канал ch типа int для передачи данных между Goroutine. Затем мы запускаем горутину generateData() с помощью функции go, которая отправляет значения по каналу ch. Затем запускается горутина processData(), которая получает значения из канала ch и печатает их на консоли.

Используя каналы для потоковой передачи данных, мы можем обеспечить эффективную и надежную связь между Goroutine generateData() и processData(), даже если они выполняются на разных потоках или машинах. Это позволяет нам создавать масштабируемые распределенные системы, способные обрабатывать большие объемы данных в режиме реального времени.