Go では、ゴルーチンは軽量の実行スレッドです。 go キーワードを使用して作成できます。メインゴルーチンは、Go プログラムの開始時に作成される最初のゴルーチンであり、プログラムの初期化と他のゴルーチンの開始を担当します。生成されたゴルーチンは他のゴルーチンによって作成され、タスクを並行して実行するために使用できます。
ゴルーチン間の主な違いの 1 つは、 main goroutine と spawned goroutine はスタック サイズです。メインのゴルーチンのスタック サイズは、通常、生成されたゴルーチンのスタック サイズよりもはるかに大きくなります。これは、メインの goroutine が、より大きなスタック サイズを必要とするシステム コールやその他のタスクの処理を担当するためです。
生成された goroutine のスタック サイズは、GODEBUG=gcflags=-G=10 環境変数を使用して調整できます。この変数は、スタック サイズを 10 メガバイトに設定します。これは、ゴルーチンで使用できる最大スタック サイズです。
main goroutine と spawned goroutine はメモリを割り当てる方法です。メインのゴルーチンはヒープからメモリを割り当てますが、生成されたゴルーチンはスタックからメモリを割り当てます。これは、メインのゴルーチンがプログラムのメモリの管理を担当するのに対し、生成されたゴルーチンはそうではないためです。
生成されたゴルーチンを使用する必要がありますタスクを並行して実行する必要がある場合。これは、特に I/O 操作を実行する場合に、プログラムのパフォーマンスを向上させるのに役立ちます。
<code class="go">package main import ( "fmt" "runtime" ) func main() { // Create a new goroutine to print a message. go func() { fmt.Println("Hello from a goroutine!") }() // Wait for the goroutine to finish. runtime.Gosched() }</code>次の例は、単純なタスクを実行するために生成された goroutine を作成する方法を示しています。この例では、 go キーワード新しいゴルーチンを作成するために使用されます。その後、ゴルーチンはメインのゴルーチンと同時に実行されます。 runtime.Gosched() 関数は、ゴルーチンが終了するのを待つために使用されます。
以上がGo プログラムのメイン ゴルーチンと生成されたゴルーチンの主な違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。