ホームページ  >  記事  >  バックエンド開発  >  Golang での Sleep 関数の使用法について議論します。

Golang での Sleep 関数の使用法について議論します。

PHPz
PHPzオリジナル
2023-04-05 13:48:233753ブラウズ

Go 言語 (Golang) は、Google によって開発されたオープンソース プログラミング言語です。 Go は同時プログラミングを自然にサポートしており、開発者が同時プログラミングを実行しやすくするためのいくつかの組み込み関数とツールを提供します。このうち、Sleep 関数は time パッケージで提供されており、この記事では Golang での Sleep 関数の使い方について説明します。

1. Sleep 関数の概要

Sleep 関数は、現在のコルーチン (ゴルーチン) をスリープ状態にし、一定期間実行を一時停止するために使用されます。関数プロトタイプは以下の通り:

func Sleep(d Duration)

このうち、Duration は期間を表す型であり、サポートされる最小時間単位はナノ秒 (ns)、最大時間は約 290 年です。プログラムでは、time パッケージで提供される定数を使用して、次のようなさまざまな期間を表すことができます。

const (
    Nanosecond  Duration = 1
    Microsecond          = 1000 * Nanosecond
    Millisecond          = 1000 * Microsecond
    Second               = 1000 * Millisecond
    Minute               = 60 * Second
    Hour                 = 60 * Minute
)

2. Sleep 関数の使用例

以下では、いくつかの例を通じて Sleep 関数を示します。使用例。

  1. 基本的な使い方
package main

import (
    "fmt"
    "time"
)

func main() {
    fmt.Println("start")
    time.Sleep(1 * time.Second)
    fmt.Println("end")
}

プログラムを実行すると出力は以下のようになります。

start
(end 1秒后输出)
end

プログラム開始後、「end」が出力されます。 1秒間寝ます。

  1. 正確な時間制御

複数のゴルーチンが同時に実行される場合、プログラムの正確性を保証するために、各ゴルーチンの実行時間を保証する必要があります。可能な限り正確です。次の例は、Sleep 機能を使用して時間を正確に制御する方法を示しています。

package main

import (
    "fmt"
    "time"
)

func main() {
    for i := 0; i < 3; i++ {
        go func() {
            fmt.Println("start")
            time.Sleep(1 * time.Second)
            fmt.Println("end")
        }()
    }
    time.Sleep(2 * time.Second)
}

プログラムを実行すると、出力は次のようになります:

start
start
start
(end 1秒后输出)
end
end
end

上記のコードでは、for ループを使用して、同時実行用の 3 つのコルーチンと各コルーチンの実行時間を作成しました。 1秒のベルです。スリープ時間は 2 秒で、各コルーチンが期待どおりに実行および出力されることが保証されます。

  1. 短時間での繰り返し操作を防止する

実際のプログラミングでは、短時間での繰り返し操作を防止する必要がある場合があります。たとえば、ボタンをクリックした後、再度クリックするまでしばらく待つ必要があります。次の例は、Sleep 関数を使用してこの機能を実装する方法を示しています。

package main

import (
    "fmt"
    "time"
)

func main() {
    click()
    time.Sleep(2 * time.Second)
    click()
}

func click() {
    now := time.Now()
    fmt.Println(now.Format("2006-01-02 15:04:05"))
    time.Sleep(1 * time.Second)
}

プログラムを実行すると、出力は次のようになります:

(start time)
2022-06-15 20:35:43
(end time)
2022-06-15 20:35:44
(start time)
2022-06-15 20:35:46
(end time)
2022-06-15 20:35:47

上記のコードでは、現在の時刻を記録し、1 秒間スリープするために使用されるクリック関数を定義します。 main 関数では、まず click 関数を 1 回呼び出し、2 秒待ってから再度呼び出します。 2 番目の呼び出しの前に 2 秒待機したため、2 番目の呼び出しは最初の呼び出しの 1 秒後に実行されます。

3. まとめ

この記事では、Golang の Sleep 関数の使い方と例を紹介します。

スリープ機能を使用すると、同時実行プログラムの実行時間を効果的に制御し、プログラムの正確性と安定性を確保できます。

スリープ機能を使用する場合は、長時間のスリープ時間を避けてください。スリープ時間が長すぎると、コルーチンの実行がブロックされ、プログラムのパフォーマンスに影響します。

以上がGolang での Sleep 関数の使用法について議論します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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