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の他に2つのgoroutineがあります、すなわちAnameおよびAidここでは、Aname著者の名前を印刷します。Aid著者のIDを印刷します。
作業:ここでは、2つのgoroutineがあります、すなわちAnameおよびAid、および1つの主goroutineがあります。このプログラムを実行する最初の時点で、主goroutineが階層化して「!...主 Go」を印刷します。-routineが開始します...!ここでは、主goroutineは親goroutineのように振る舞い、他のgoroutineはその子プロセスです。したがって、まず主goroutineを実行し、その後他のgoroutineを起動します。主goroutineが終了すると、他のgoroutineも終了します。したがって、主要なgoroutineの後で、AnameおよびAid goroutineも同時に作業を開始します。Aname goroutineは150msから作業を開始し、Aidは500msで作業を開始。