[Go] golang的select多路选择功能
2023-02-18 15:47:28 时间
基于select的多路复用:
1.解决如果一个channel中没有事件发过来,程序会立即阻塞,无法接收到第二个channel中的事件
2.一般每一个case都代表一个通信操作,多个case会选一个能执行的
3.default会默认执行,因此可以作为轮询channel来用
package main import ( "fmt" ) func main() { //定义一个缓冲通道,大小是1 ch := make(chan int, 1) for i := 0; i < 10; i++ { //select多路复用 //1.第一个case会阻塞,第二个case执行0发送到channel //2.第一个case会执行打印channel中的值,第二个case会阻塞 //3.第一个阻塞,第二个执行2会发送到channel 交叉执行下去 select { case x := <-ch: fmt.Println(x) case ch <- i: } } }
相关文章
- gitee stars 统计
- Cobaltstrike4.0——记一次上头的powershell上线分析
- PHP代码审计入门
- 浅析PHP GC垃圾回收机制及常见利用方式
- 关于PHP缓冲控制在IE浏览器下的应用
- PHP的异常处理范例
- 最简单的配置Apache在Linux下自动启动的方法
- 在Linux下配置MySQL随系统自动启动
- 在Linux下编译MySQL时报错“No curses/termcap library found”解决方案
- 关于PHP的Session过期问题
- PHP笔试准备题目之基础题目
- 在Linux下为Apahce加载rewrite模块
- PHP的sprintf()函数学习研究笔记
- Linux阵营各版本的特点
- 让NuSphere PhpED的注释更规范
- 详解PHP中include和require的区别
- PHP 5.3.6 版本发布
- vsFTPd在Linux中的编译安装和配置方法(原创)
- Redhat/CentOS Linux常用配置
- Linux环境安装配置Nginx笔记