兄弟连区块链培训分享Go语言并发超时处理

兄弟连区块链培训 · · 868 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

  2018年第一季度,区块链相关人才的招聘需求已达到2017年同期的9.7倍,发布区块链相关岗位的公司数量同比增长4.6倍。


  兄弟连教育Go全栈与区块链培训课程是由清华、微软和谷歌名师历时半年时间研发出的独一无二的体系化课程。


golang并没有在语言层次上提供超时操作,但可以通过一些小技巧实现超时。

原理:

并发一个函数,等待1s后向timeout写入数据,在select中如果1s之内有数据向其他channel写入则会顺利执行,如果没有,这是timeout写入了数据,则我们知道超时了。

package main

import "fmt"

import "time"


func main() {

ch := make(chan int, 1)

timeout := make(chan bool, 1)


// 并发执行一个函数,等待1s后向timeout写入true

go func() {

time.Sleep(1000)

timeout <- true

}()



// 这里会等待ch或timeout读出数据

// 因为一直没有向ch写入数据

// 在1s后向timeout写入了数据

// 所以执行了timeout的case

// 利用这个技巧可以实现超时操作

select {

case <- ch :

fmt.Println("read from ch")

case <- timeout :

fmt.Println("time out...")

}

}


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:兄弟连区块链培训

查看原文:兄弟连区块链培训分享Go语言并发超时处理

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

868 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传