zoukankan      html  css  js  c++  java
  • 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
    }
    
  • 相关阅读:
    作业2(5)
    作业2(7)
    作业2(4)
    作业2(3)
    作业2(1)
    作业3(5)
    作业3(6)
    实验7综合练习(4)
    实验7综合练习(2)
    计算成绩
  • 原文地址:https://www.cnblogs.com/Kingram/p/13612401.html
Copyright © 2011-2022 走看看