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
}

最新文章

  1. Spring Boot文档阅读
  2. usr/include/dispatch - dispatch_source
  3. 十二天 mysql操作
  4. 关于在c#中引用外部dll文件,在页面中找不到命名空间
  5. Scene (场景视图) 详解
  6. Android系统Google Maps开发实例浅析
  7. Selenium 使用NPOI来实现report
  8. 为什么DropDownList的SelectedIndexChanged事件触发不了
  9. HTTP协议形象展现
  10. 用vue实现点击编辑按钮将li变为可以输入文本的input
  11. python字符串(string)方法整理
  12. mysql-SQL Error: 1205, SQLState: 41000
  13. U盘文件系统格式
  14. Docker容器学习与分享01
  15. day3 三、基本数据类型和运算符
  16. 【网络编程一】主机字节序与网络字节序以及ip地址转换函数
  17. 《Netty权威指南》(三)Netty 入门应用
  18. Tensorflow(二)
  19. 微软职位内部推荐-Senior Software Engineer II-Search
  20. restful的设计风格

热门文章

  1. JS实现单例模式的多种方案
  2. mitrproxy抓包微信小程序
  3. Jsp授课
  4. [bug] powerdesigner 设置id 自增 Properties中没有identity
  5. hive beeline详解
  6. gparted 当分区空间大于1T 用gparted分区
  7. ipmitool使用手册(20200401)
  8. 攻防世界(六)supersqli
  9. Canvas跟随鼠标炫彩小球
  10. Go基础结构与类型06---房贷计算器