Windows でのゴルーチンの実行: サイレント障害のトラブルシューティング
ゴルーチンを含む単純なテストでは、予期した出力が生成されず、Windows で予期しない動作が示されます。 。この問題は、main 関数が goroutine の完了を待たずに終了するために発生します。
Go Awaits
goroutine が "go" キーワードを使用して起動されると、 main 関数と同時に実行されます。ただし、main 関数の実行は一時停止せず、呼び出されたゴルーチンの完了を待ちます。その結果、main 関数が終了し、ゴルーチンがスケジュールされないままになる可能性があります。
改善策
ゴルーチンが実行してその出力を出力できるようにするために、メイン関数はしばらく待機するように関数を変更する必要があります。これは、「time」パッケージと「Sleep」機能を使用して実現できます。スリープ時間を導入することで、main 関数は終了する前に goroutine を実行して出力を生成する機会を与えます。
修正コード
次の修正コードは、次の方法で問題を解決します。 main 関数の最後に 10 秒のスリープ時間を追加します:
<code class="go">package main import ( "fmt" "time" ) func test() { fmt.Println("test") } func main() { go test() time.Sleep(10 * time.Second) }</code>
Output
変更されたコードは、期待される出力を生成するようになりました:
test
この変更により、main 関数は goroutine の起動後に待機できるようになり、プログラムが終了する前に「test」メッセージを実行して出力するのに十分な時間が与えられます。
以上がWindows で Goroutine 出力が消えるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。