博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Golang select
阅读量:5955 次
发布时间:2019-06-19

本文共 659 字,大约阅读时间需要 2 分钟。

Golang下select的功能和Linux IO复用中的select, poll, epoll相似,是监听 channel 操作,当 channel 操作发生时,触发相应的动作。

package mainimport "time"import "fmt"func main() {              /* 用于做定时器 */       timeout := make(chan bool, 1)       go func() {        time.Sleep(1e9) // one second          timeout <- true    }()    ch := make(chan int)    select {    case <-ch:    case <-timeout:        fmt.Println("timeout")    }    /*当请求进来的时候我们会生成一个 job 扔进 channel, 由其他协程从 channel 中获取 job 去执行。 但是我们希望当 channel 瞒了的时候, 将该 job 抛弃并回复 【服务繁忙,请稍微再试。】 就可以用 select 实现该需求。 */    ch2 := make(chan int, 1)    ch2 <- 2    select {    case ch2 <- 3:    default:        fmt.Println("channel is full !")    }}

转载地址:http://htexx.baihongyu.com/

你可能感兴趣的文章
vim简单处理博文
查看>>
android 从网络加载图片并显示
查看>>
transport tbs exmaple01 reverse teaching meterial
查看>>
解决电脑启动报:Reboot and select proper boot device
查看>>
squid 反向代理
查看>>
linux下/proc/cpuinfo 文件分析
查看>>
java soap api操作和发送soap消息
查看>>
linux面试题。
查看>>
关于MySQL分表操作的研究
查看>>
持续集成之 Jenkins+Gitlab 打包发布程序到 Tomcat(二)
查看>>
Server-01 How to Find the Remote Desktop Port
查看>>
Java--接口、抽象与继承
查看>>
华为交换机OSPF和BGP知识
查看>>
通过IP判断登录地址
查看>>
Oracle闪回技术
查看>>
利用单壁路由实现vlan间路由
查看>>
hello world
查看>>
CentOS 7 配置yum本地base源和阿里云epel源
查看>>
python 学习导图
查看>>
生成树
查看>>