Сегодня я объясню основы Goroutine. Многим новичкам в го, возможно, придется бороться или не знать, что такое Горутин. Итак, давайте узнаем, на что он способен

Что такое Горутин?

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

Горутины невероятно дешевы по сравнению с традиционными потоками, поскольку накладные расходы на создание горутины очень низки. Поэтому они широко используются в Go для параллельного программирования.

Как это работает?

Чтобы понять, как это работает. Существует ключевое слово «параллелизм», которое представляет собой поведение Goroutine во время выполнения.

Параллелизм означает одновременную работу со многими задачами. Наш мозг — хороший пример параллелизма. Вы идете по улице, видите множество проезжающих машин и слышите, как кто-то сигналит. Удивительно, но у нас есть только один мозг, чтобы интерпретировать все обстоятельства, и он отлично справляется (почти) с одним и тем же. В Go, если есть 2 горутины, во время выполнения она быстро переключается взад и вперед в каждой подпрограмме, чтобы вычислить свою задачу. Вот почему одно ядро ​​может выполнять несколько задач одновременно.

Давайте начнем

Вот простой синтаксис для использования Goroutine. Просто введите «go» перед функцией.

package main

import (
 "fmt"
 "time"
)

func main() {
 go fmt.Println("Do Task 1")
 time.Sleep(1 * time.Second)
 fmt.Println("Do task 2")
}
Result:
Do Task 1
Do task 2

Задача 1 будет работать в другой процедуре, а Задача 2 будет работать в основной программе. Причины, по которым я ставлю time.Sleep между каждой задачей, потому что, когда основная горутина будет выполнена, другая горутина будет остановлена ​​независимо от того, завершится она или нет. Поэтому программе нужно дождаться завершения задачи 1.

Для лучшего программирования этот случай нецелесообразен, потому что мы не знаем, сколько времени тратит горутина. Затем есть концепция «WaitGroup», которая сообщает Go, сколько мы ждем, пока не сможем выполнить следующий шаг.

В следующем эпизоде ​​я объясню, как и когда использовать Golang «WaitGroup».

Ссылка:

https://www.educative.io/answers/what-is-a-goroutine

https://medium.com/rungo/достижение параллелизма-в-го-3f84cbf870ca