GO语言退出协程之超时设置_Crazyjy的博客-程序员宅基地

技术标签: GO相关  

GO语言协程超时任务

设置协程超过一定时间后退出

package main

import (
	"fmt"
	"time"
)

func run(done chan string) {
	/*在计时器触发之前,垃圾收集器不会回收 Timer, 所以定时器不要写在select中*/
	t := time.NewTimer(time.Second * time.Duration(2))
	defer t.Stop()
L:
	for {
		select {
		case <-done:
			fmt.Println("run stop signal")
			break L		// 跳出for循环
		case <-t.C:
			fmt.Println("run time out")
			break L		// 超时跳出循环
		default:
			break
		}
		time.Sleep(time.Second * 1)
		fmt.Println("run loading...")
	}
	fmt.Println("run exited")
	<-done
}

func main() {
	c := make(chan string, 1)

	go run(c)

	fmt.Println("main wait...")
	time.Sleep(time.Second * 3)

	c <- "stop"
	close(c)

	fmt.Println("main send stop")
	time.Sleep(time.Second * 1)
	fmt.Println("main exited")
}

为何使用break L 退出参考文章:
https://blog.csdn.net/u012265809/article/details/114874112

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u012265809/article/details/114920854

智能推荐

PHP“Cannot use object of type stdClass as array”_weixin_33819479的博客-程序员宅基地

2019独角兽企业重金招聘Python工程师标准&gt;&gt;&gt; ...

Java代码小demon(一)SpringBoot+二维码和条形码生成_暮鼓晨钟丫的博客-程序员宅基地_springboot生成条形码

1. 简介原由需要一个工具类,可以将数据存储在二维码中,通过扫一扫可以获取到信息,条形码不能接受中文字符借鉴博客带妳心菲ljheee项目依赖主要的jar包依赖:&lt;dependency&gt; &lt;groupId&gt;com.google.zxing&lt;/groupId&gt; &lt;artifactId&gt;core&lt;/artifactId&gt; &lt;version&gt;3.3.3&lt;/version&gt;

用C语言实现字母之间的大小写转换_han_shi_lei的博客-程序员宅基地

题目要求编写一个程序,可以一直接收键盘字符,如果是小写字符就输出对应的大写字符,如果接收的是大写字符,就输出对应的小写字符,如果是数字不输出。程序分析看到“接受字符”想到scanf函数,但题设中不只输入一次而且输入类型也不同(%c %d),那么定义就只能用getchar()函数实现。while(hsl=getchar()!=EOF){…}如果不输入Ctrl+z,hsl的值恒为1,...

phpadmin shell 搜寻网段下端口_未来叫兽的博客-程序员宅基地

phpadmin 获取shell1.利用Nmap扫描当前局域网网段上所有主机nmap -sn -PE 192.168.1.0/24 扫描192.168.1网段上的所有主机2 登录网址下的admin在sql查询输入3条指令 即可1 set global general_log=‘on’; ##开启2 SET global general_log_file=‘C:/phpStudy/PHPTutorial/www/testtest.php’;

结构体与动态内存(5.11)_椰子哥·天行者的博客-程序员宅基地

结构体与动态内存:一、结构体结构体简介特点:构造类型,可以构造出任何程序员想要的类型。 思考:如何定义一个结构体 struct  结构体名{数据类型  成员变量名;数据类型  成员变量名;数据类型  成员变量名;...;} struct people {int id;char name[20];int score;};

centos7.5升级openssh7.4到7.9_weixin_30666753的博客-程序员宅基地

漏洞扫描工具扫描出openssh用户枚举漏洞,搜索资料得知无补丁和升级包,解决这个漏洞得安装漏洞修复之后的版本version&gt;7.8。环境linux版本: CentOS Linux release 7.5.1804ssh版本: OpenSSH_7.4p1升级前准备备份备份ssh配置mkdir -p /bakcp -ar /etc/ssh /bak备份老版本的o...

随便推点

Oracle 11G日志_weixin_30522183的博客-程序员宅基地

之前工作中遇到了oracle无法连接的问题,后排查和查询资料后,发现居然是Oracle日志过大(监听日志超过4G)的原因导致LISTENER监听无法连接的问题。Oracle日志目录:监听日志的位置:ORACLE_BASE/diag/机器名/listener/trace目录alert日志的位置:ORACLE_BASE/diag/rdbms/小写的数据库SID/大写的数据SID/t...

Raspberrypi树莓派通过EC20实现4G蜂窝网络上网_Mcuzone野芯科技的博客-程序员宅基地

关键词: www.raspberrypi.org/ RaspberryPi 3B 树莓派 EC20 4G模块 全网通 无线上网 蜂窝网络树莓派3系列在创客领域有非常大的市场占有率,甚至不少量产产品都基于树莓派。本文简单描述了在树莓派3B上连接EC20模块实现4G上网的过程。EC20模块为全功能模块,即除了4G全网通外还支持GPS功能,支持语音通话功能。如果要语...

sqlserver 中烦人的单引号_dhl_345的博客-程序员宅基地_sqlserver 单引号

在开始学习sqlserver时,可能受以前语言学习习惯的影响,对字符数据操作很费劲,尤其是单引号。我将自己的一点小心得体会记录下来。首先,使用单引号,必须知道它的ASCII值,单引号的ASCII为39,所以单引号可以用char(39)表示再次,也可以使用转义字符(这是本人自造的名字),比如字符串连接时,[username]=’’ [email protected] +‘‘, 用两个单引号表示一个

Windows 如何注册自己的伪协议_hellokandy的博客-程序员宅基地_windows 伪协议

介绍伪协议前先介绍一下协议是什么。这里说到的协议不是指网络上的TCP/IP协议,而是操作系统提供支持的一种协议,类似标准协议HTTP, FTP。自定义协议叫做伪协议。如何注册一个伪协议?操作系统的协议都写在注册表[HKEY_CLASSES_ROOT]的KEY值下,我们在注册表内添加一项对我们软件支持的协议标志即可!

laravel 上传文件出现无后缀或.bin后缀_bwibt的博客-程序员宅基地

问题:使用Storage::putFile上传文件到远程服务器,但是生成的部分文件没有后缀或.bin。导致文件获取失败查阅了资料后发现guessClientExtension 是根据 mime 来决定后缀的为了不破坏laravel的完整性,可以使用另一个方法:Storage::putFileAs,这个方法可以指定文件名,即:参考资料:https://github.c...

FPGA寄存器打拍_CHANG12358的博客-程序员宅基地_寄存器打拍

关于FPGA中“打一拍”的含义,我们可以理解为把某个信号延迟了一个时钟周期,推而广之:“打两拍”就是延迟两个时钟周期,“打n拍”就是延迟n个时钟周期。     “打一拍”的目的很简单,就是为了FPGA中时序的正确性!!!!(了保证FPGA输入输出接口的时序,一般会要求将输入管脚首先打一拍再使用,输出接口也要打一拍再输出FPGA。将信号打一拍的方法是将信号通过一次寄存器,而且必须在IOB里面的寄...

推荐文章

热门文章

相关标签