Timeout

概述 #

利用 channel (通道)time.After() 方法实现超时控制。

例子 #

package main

import (
	"fmt"
	"time"
)

func main() {
	ch := make(chan bool)

	go func() {
		defer func() {
			ch <- true
		}()

		time.Sleep(2 * time.Second) // 模拟超时操作
	}()

	select {
	case <-ch:
		fmt.Println("ok")
	case <-time.After(time.Second):
		fmt.Println("timeout!")
	}
}

// $ go run main.go
// 输出如下
/**
  timeout!
*/

转载申请

本作品采用 知识共享署名 4.0 国际许可协议 进行许可,转载时请注明原文链接,图片在使用时请保留全部内容,商业转载请联系作者获得授权。

© 蛮荆 | 陕公网安备 61011302001681 号 | 陕ICP备2023004378号-1 | Rendered by Hugo