例Example27の初めから言語を行く。タイムアウト処理

タイムアウト  それは操作を実行するのにかかる時間の点で外部リソースへの接続、または他のプログラムのためには非常に重要です。チャンネルのおかげと  select移動で達成操作のタイムアウトはシンプルかつエレガントです。

例:

メインパッケージ

のインポート FMT 
インポート 時間



FUNCメイン(){ 
    c1は: = メイク(チャンString)を


    、我々は外部コールを実行した場合、この例では、//を、そして2 その実行後路C1秒を通じてバック結果。
    FUNCゴー(){ 
        time.sleep(time.Second * 2 
        C1 < - " ワン" 
    }()

     //この選択操作のタイムアウトを使用して実装されています。RES:= < - Time.After 1待ちタイムアウト< - 、結果を待つc1は第二の送信後の値。
    //以降、デフォルトのハンドラを選択する操作が許容1超える場合は、最初の操作を受信する準備ができている第二に、それはケースをタイムアウトします。
    {SELECT 
    ケースRESを: = < - C1: 
        fmt.Println(RES)
    ケース < - time.After(time.Second * 1 ):
        fmt.Println(" タイムアウト1 " 
    } 

    C2: = 作る(チャン列)
    行くFUNC(){ 
        time.Sleep(time.Second * 2 
        C2 < - " 2 " 
    }()
    
    {を選択し
    た場合RESを: = < - C2:
        fmt.Println(RES)
    の場合 < - time.After(time.Second * 3 ):
        fmt.Println(" timeount 2 " 
    } 

}

結果:

$実行example.goを行きます

    タイムアウト1
    2

 ショーの実行中の操作のうち、プログラム、初めてを実行し、正常に受信。

この使用  select タイムアウトモードを、結果がチャンネルを渡す必要があります。他の重要な機能は、チャネルおよび移動に基づいているので、これは、一般的なケースのための良い方法ですselect さん。

おすすめ

転載: www.cnblogs.com/yhleng/p/11752528.html