1、select实现的超时机制

示例:

package main

import (
"fmt"
"time"
) func main() {
ch := make(chan int)
quit := make(chan bool) //新开一个协程
go func() {
for {
select {
case num := <-ch:
fmt.Println("num = ", num)
case <-time.After(3 * time.Second):
fmt.Println("超时")
quit <- true
}
} }() //别忘了() for i := 0; i < 5; i++ {
ch <- i
time.Sleep(time.Second)
} <-quit
fmt.Println("程序结束") }

执行结果:

num =  0
num = 1
num = 2
num = 3
num = 4
超时
程序结束

  

最新文章

  1. iOS之九宫格图片
  2. 06Java数组
  3. Android入门(五)UI-单位与尺寸、ListView
  4. [转]关于网络通信,byte[]和String的转换问题
  5. .NET破解之轻量万能自定义信息管理系统
  6. 微信智慧KTV上线 不怕周末订不到包厢了
  7. 从协议VersionedProtocol开始
  8. Spark RDD的依赖解读
  9. Ajax异步请求PHP数据
  10. MapReducer Counter计数器的使用,Combiner ,Partitioner,Sort,Grop的使用,
  11. 记录一个原因不明的段错误(libxml2 proc activemq的三角恋)
  12. Python爬虫入门教程 23-100 石家庄链家租房数据抓取
  13. 全平台网页播放器兼容H5与Flash还带播放列表
  14. 网页字体在Frontpage2000制作网页中的讲解
  15. 134、直接拿来用,Android界最火的开源项目
  16. MySQL Execution Plan--EXPLAIN用法
  17. 02工厂方法模式FactoryMethod
  18. [No0000101]JavaScript-基础课程1
  19. Tomcat无法访问中文路径的解决办法
  20. Asp.Net MVC Areas区域说明

热门文章

  1. UI自动化测试(六)TestNG操作详解
  2. 硬盘 不属于Rom RAM
  3. 【BZOJ-2595】游览计划 斯坦纳树
  4. [工具]GitHub上整理的一些工具[转]
  5. rails 数据迁移 -migration
  6. 接口开发-集成接口文档(swagger)
  7. Elasticsearch 实现自定义排序插件
  8. 玩转ptrace(转)
  9. gitblit.cmd运行自动关闭
  10. [廖雪峰] Git 分支管理(1):创建与合并分支(HEAD、master、dev、指针)