ホームページ  >  記事  >  バックエンド開発  >  Windows で Goroutine 出力が消えるのはなぜですか?

Windows で Goroutine 出力が消えるのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-03 02:08:29775ブラウズ

Why Does My Goroutine Output Disappear on Windows?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。