Golang超时机制--2秒内某个函数没被调用就认为超时

Golang超时机制--2秒内某个函数没被调用就认为超时

需求描述

当一整套流程需要其他程序来调用函数完成时通常需要一个超时机制,防止别人程序故障不调你函数导致你的程序流程卡死

实现demo

package main

import (
	"fmt"
	"time"
)

var timeoutchan chan bool

func init () {
	timeoutchan = make(chan bool ,1)
}

func main() {
	f13_1()
	// 通过睡眠模拟超时
	time.Sleep(time.Second * 3)
	f13_2()
	time.Sleep(time.Second * 5)
}

func f13_1(){
	go func () {
		for {
			<- time.After(time.Second*2)
			select {
			case <- timeoutchan:
				fmt.Println("success...")
				return
			default:
				fmt.Println("timeout...")
				// TODO 做超时处理逻辑
				return
			}
		}
	}()
}

func f13_2() {
	timeoutchan <- true
}
posted @ 2020-09-04 10:30  Kingram  阅读(522)  评论(0编辑  收藏  举报