标签:通过 lang code 程序 睡眠 sel 其他 block 别人
当一整套流程需要其他程序来调用函数完成时通常需要一个超时机制,防止别人程序故障不调你函数导致你的程序流程卡死
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
}
标签:通过 lang code 程序 睡眠 sel 其他 block 别人
原文地址:https://www.cnblogs.com/Kingram/p/13612401.html