English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Goroutine는 함수나 메서드로, 프로그램에서 존재하는 다른 Goroutine와 독립적으로 동시에 실행할 수 있는 것입니다. 다시 말해, Go 언어에서 동시에 실행되는 모든 활동을 Goroutines라고 합니다. Go 언어에서는 프로그램에서 여러 개의 goroutine를 생성할 수 있습니다. go 키워드를 함수나 메서드 호출 전에 사용하여 goroutine를 생성할 수 있습니다. 다음과 같은 문법을 사용합니다:
func name(){ // 문장 } //go 키워드로 goroutine 생성 go name()
이제 예제를 통해 여러 goroutine를 생성하고 사용하는 방법에 대해 논의해 보겠습니다:
package main import ( "fmt" "time" ) //goroutine 1 func Aname() { arr1 := [4}]string{"Rohit", "Suman", "Aman", "Ria"} for t1 := 0; t1 <= 3; t1++ { time.Sleep(150 * time.Millisecond) fmt.Printf("%s\n", arr1[t1}] } } // goroutine 2 func Aid() { arr2 := [4}]int{300, 301, 302, 303} for t2 := 0; t2 <= 3; t2++ { time.Sleep(500 * time.Millisecond) fmt.Printf("%d\n", arr2[t2}] } } func main() { fmt.Println("!...주 Go-routine가 시작하는...! // Goroutine 호출 1 go Aname() // Goroutine 호출 2 go Aid() time.Sleep(3500 * time.Millisecond) fmt.Println("\n!...주 Go-routine가 끝나는...!") }
출력:
!...주 Go-routine가 시작하는...! Rohit Suman Aman 300 Ria 301 302 303 !...주 Go-routine가 끝나는...!
생성:위의 예제에서 주goroutine 외에 두 개의 goroutine가 있습니다. 즉Aname과Aid여기서Aname작성자의 이름을 출력합니다.Aid작성자의 id를 출력합니다.
작업:여기서 우리는 두 개의 goroutine가 있습니다. 즉Aname과Aid또한 하나의 주goroutine가 있습니다. 이 프로그램을 처음 실행할 때, 주goroutine가 계층적으로 실행되어 “!...주 Go”를 출력합니다.-routine가 시작합니다...!” 여기서의 주goroutine는 부모goroutine와 같으며, 다른 goroutine는 그의 자식 프로세스입니다. 따라서 먼저 주goroutine를 실행한 후 다른 goroutine를 시작하며, 주goroutine가 종료되면 다른 goroutine도 종료됩니다. 따라서 주goroutine 이후에Aname과Aid goroutine가 동시에 작업을 시작합니다. Aname goroutine는150ms에서 작업을 시작하며, Aid는500ms 시작 작업。