... > GO > Горутины и каналы...

Горутины и каналы в GO

НАВИГАЦИЯ ПО СТРАНИЦЕ

Горутины (Goroutines) Каналы (Channels)

Горутины (Goroutines):

Горутины в GO представляют собой легковесные потоки выполнения, которые могут быть запущены параллельно с основным потоком программы. Они позволяют эффективно обрабатывать множество задач одновременно.

Запуск горутины:

Горутины запускаются с использованием ключевого слова go перед вызовом функции.

Пример:

func main() {
    go myFunction()
    // Основной код программы
}

func myFunction() {
    // Код выполняемый в горутине
}

Каналы (Channels)

Каналы в GO представляют собой мощный механизм для обмена данными между горутинами. Они предоставляют безопасный и синхронизированный способ передачи информации.

Создание канала:

Канал создается с использованием встроенной функции make и оператора chan.

Пример:

myChannel := make(chan int)

Отправка и получение данных через канал:

// Отправка данных в канал
myChannel <- 42

// Получение данных из канала
value := <-myChannel

Закрытие канала:

Каналы можно закрывать для указания, что больше данных не будет передаваться. Закрытый канал не принимает новые данные, но по-прежнему можно читать оставшиеся значения.

Пример:

close(myChannel)

Выбор по каналам (Select):

Оператор select в GO позволяет выбирать из нескольких каналов, что делает его удобным для работы с множеством горутин и каналов.

select {
case msg1 := <-channel1:
    fmt.Println("Received", msg1)
case msg2 := <-channel2:
    fmt.Println("Received", msg2)
}

Использование горутин и каналов в GO обеспечивает простой и эффективный способ реализации параллельности и обмена данными между частями программы. Этот механизм делает GO удобным для разработки конкурентных программ с высокой производительностью.