수색…


소개

goroutine은 Go 런타임에 의해 관리되는 경량 스레드입니다.

go f (x, y, z)

실행중인 새로운 goroutine을 시작합니다.

f (x, y, z)

f, x, y, z의 평가는 현재의 goroutine에서 일어나고 f의 실행은 새로운 goroutine에서 발생합니다.

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은 다른 함수와 동시에 실행할 수있는 함수입니다. 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 함수 호출이 포함되어 있습니다. 그렇지 않으면 프로그램이 숫자를 인쇄하지 않고 종료되었습니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow