Windows 上のゴルーチンの動作を理解する
テスト プログラムでは、単に文字列 " を出力する test() という名前のゴルーチンを定義します。テスト。"ただし、Goroutine が実行されているように見えないという予期しない動作が発生します。
この問題は、Goroutine の実行の性質から発生します。従来のスレッドとは異なり、ゴルーチンは協調的です。つまり、Go ランタイムがスケジューリングを管理します。あなたのケースでは、ゴルーチンが実行される前に main 関数が戻ります。
Go ステートメントとゴルーチン
go ステートメントは関数を非同期的に呼び出します。例のように main 関数内で使用すると、プログラムの実行は呼び出された関数が完了するのを待ちません。これは、main 関数がゴルーチンの管理に関与していないためです。
ゴルーチンが確実に実行されるようにするには、プログラムが待機する方法を提供する必要があります。これは、
時間ベースの待機の例:
時間ベースの待機を含むプログラムの修正バージョンを次に示します:
<code class="go">package main import ( "fmt" "time" ) func test() { fmt.Println("test") } func main() { go test() time.Sleep(10 * time.Second) }</code>
この例では、時間です。 Sleep 関数は main 関数を 10 秒間一時停止し、ゴルーチンの実行に十分な時間を与えます。
ゴルーチンの動作を理解し、確実に実行するための適切なテクニックを組み込むことで、Golang プログラムでゴルーチンを効果的に使用できます。
以上が私のゴルーチンが Windows で実行できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。