Go言語 タイムアウト設定:制御方法と実装例
Golangでは、contextパッケージを使用してタイムアウト制御を設定することができます。以下は、Golangでタイムアウト制御を設定する方法を示したサンプルコードです。
package main
import (
"context"
"fmt"
"time"
)
func main() {
// 创建一个具有5秒超时的上下文
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
// 在goroutine中执行一个长时间运行的任务
go func() {
time.Sleep(10 * time.Second)
fmt.Println("Long running task completed")
}()
// 在主goroutine中监听超时
select {
case <-ctx.Done():
fmt.Println("Timeout exceeded")
}
}
上記の例では、context.WithTimeout関数を使用して、5秒間のタイムアウトが設定されたコンテキストを作成しました。その後、長時間実行されるタスクをゴルーチンで実行しました。メインのゴルーチンでは、select文を使用してコンテキストのDoneチャネルを監視し、タイムアウトが発生した場合には”Timeout exceeded”と出力します。
contextパッケージを使用することで、Golangでタイムアウト制御を簡単に設定し、長時間実行されるタスクがプログラムを永久にブロックしないようにします。