Go

Goroutine の基礎

Goroutine、go キーワード、sync.WaitGroup、runtime.GOMAXPROCS、goroutine リーク

20 面接問題·
Junior
1

Go における goroutine とは何ですか?

回答

goroutine は他の関数と並行して実行される関数であり、OS ではなく Go ランタイムによって管理されます。OS スレッド(数 MB)と比べて非常に軽量です(初期スタックは数 KB)。Go スケジューラは数千、さらには数百万の goroutine を限られた数の OS スレッド上に多重化できるため、Go では並行処理が非常に扱いやすくなっています。

2

Go で新しい goroutine を起動するにはどうすればよいですか?

回答

go キーワードに関数呼び出しを続けると、新しい goroutine が起動します。たとえば 'go myFunction()' や、無名関数の場合は 'go func() { ... }()' のように書きます。goroutine は呼び出し元のコードと並行して即座に実行されます。注意点として、main 関数は起動した goroutine の終了を自動的には待ちません。

3

goroutine と OS スレッドの主な違いは何ですか?

回答

goroutine の初期スタックは約 2 KB ですが、OS スレッドは通常 1〜2 MB を必要とします。Go runtime はユーザー空間で goroutine の scheduling を管理し(M:N scheduling)、数千の goroutine を数本の OS スレッド上に多重化します。これにより、リソースに制限される OS スレッドとは異なり、システムに負荷をかけずに数百万の goroutine を作成できます。

4

メインプログラムが goroutine の終了前に終了するとどうなりますか?

5

Go runtime は goroutine の実行をどのように管理しますか?

+17 面接問題

次の面接に向けてGoをマスター

すべての問題、flashcards、技術テスト、コードレビュー演習、面接シミュレーターにアクセス。

無料で始める