(Статья 4 из цикла "Golang с нуля") Одна из визитных карточек Go — это его мощная и при этом простая модель параллелизма, основанная на горутинах и каналах. В этой статье мы погрузимся в эту тему и посмотрим, как легко писать конкурентный код на Go. Горутина (goroutine) — это легковесная, независимая функция, которая может выполняться одновременно с другими горутинами. В отличие от традиционных потоков операционной системы, создание и переключение между горутинами происходит гораздо быстрее и с меньшими затратами ресурсов. Чтобы запустить функцию как горутину, достаточно добавить ключевое слово go перед её вызовом:
package main
import (
"fmt"
"time"
)
func say(s string) {
for i := 0; i < 3; i++ {
time.Sleep(100 * time.Millisecond) // Имитируем работу
fmt.Println(s)
}
}
func main() {
go say("Привет")
go say("Мир")
time.Sleep(2 * time.Second) // Ждём, пока обе горутины закончат
}
В этом примере две функции say запускаются параллельно. Без time.Sleep в main программа заве