码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-09-17 12:52:21      阅读:17      评论:0      收藏:0      [点我收藏+]

标签:通过   lang   code   程序   睡眠   sel   其他   block   别人   

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
}

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

标签:通过   lang   code   程序   睡眠   sel   其他   block   别人   

原文地址:https://www.cnblogs.com/Kingram/p/13612401.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!