31 Конкурентность
Что такое горутина?
Ответ
Горутина — это функция, которую планировщик Go выполняет одновременно с другими. Запуск пишется как go f(). Горутина дешевле потока операционной системы: рантайм сажает многие горутины на меньшее число потоков. Сама по себе она ничего не возвращает вызывающему.
Подробнее
main — тоже горутина. Когда она заканчивается, процесс завершается и остальные горутины обрываются. Чтобы дождаться работы, нужен канал, WaitGroup или другой явный сигнал.
Общая память без синхронизации даёт гонку. Её ищет go test -race.
package main
import (
"fmt"
"sync"
)
func main() {
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
fmt.Println("привет из горутины")
}()
wg.Wait()
}