Поиск…


Вступление

Горотин - это легкий поток, управляемый Run runtime.

go f (x, y, z)

запускает новый горутин

f (x, y, z)

Оценка f, x, y и z происходит в текущем goroutine, и выполнение f происходит в новом goroutine.

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

Ссылка: https://tour.golang.org/concurrency/1

Основная программа Goroutines

package main

import (
    "fmt"
    "time"
)

func say(s string) {
    for i := 0; i < 5; i++ {
        time.Sleep(100 * time.Millisecond)
        fmt.Println(s)
    }
}

func main() {
    go say("world")
    say("hello")
}

Горотин - это функция, которая может работать одновременно с другими функциями. Чтобы создать goroutine, мы используем ключевое слово go за которым следует вызов функции:

package main

import "fmt"

func f(n int) {
  for i := 0; i < 10; i++ {
    fmt.Println(n, ":", i)
  }
}

func main() {
  go f(0)
  var input string
  fmt.Scanln(&input)
}

Как правило, вызов функции выполняет все утверждения внутри тела функции и возвращается к следующей строке. Но с goroutines мы немедленно возвращаемся к следующей строке, так как не дождаемся завершения функции. Таким образом, Scanln функции Scanln , иначе программа Scanln без печати номеров.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow