Coroutine は、明示的な切り替えを通じて同じコール スタック内の実行ユニットを再利用する軽量のスレッドです。そのライフサイクルには、作成、実行、一時停止、回復、完了が含まれます。 go キーワードを使用してコルーチンを作成します。これは、実際の並列計算 (フィボナッチ数の計算など) に使用できます。
Golang コルーチンの作成とライフサイクル
はじめに
コルーチン Itコルーチンは軽量のスレッドであり、独立した実行ユニットです。ただし、スレッドとは異なり、コルーチンはスレッドのような独立したコール スタックを持つ必要はありません。代わりに、コルーチンを明示的に中断 (yield) または再開 (resume) することで、コルーチン作成関数のコール スタックを再利用します。
コルーチンの作成
Go では、go
キーワードを使用してコルーチンを作成します。
go <协程体>
このうち、<coroutine body>
は、コルーチンによって実行されるコードブロックを表します。
コルーチンのライフ サイクル
コルーチンのライフ サイクルは、主に次の段階に分かれています:
go
キーワードを使用して作成されます。 chan <-
または select
ステートメントを呼び出すことによって一時停止されます。 <-chan
または select
ステートメントによって復元されます。 close(chan)
が呼び出されます。 実践的なケース
コルーチンを使用してフィボナッチ数列を計算する例を次に示します:
package main import "fmt" func main() { // 创建一个协程计算斐波那契数列 go func() { first, second := 0, 1 for i := 0; i < 10; i++ { fmt.Println(first) temp := first first = second second = temp + second } }() // 主协程等待其他协程执行完成 <-make(chan bool) }
この例では、次のように作成します。フィボナッチ数列を計算するゴルーチン。メインのコルーチンは、make(chan bool)
を使用してバッファリングされていないチャネルを作成し、チャネルが閉じられるのを待ちます。ゴルーチンは計算を完了するとチャネルを閉じ、それによってメインのゴルーチンに終了を通知します。
以上がGolang コルーチンの作成とライフサイクルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。