知识点 channel的使用
package demo_channel import ( "fmt" "time") func main() { //无缓存chan ch := make(chan int) go func() { fmt.Println("执行") ch <- 99 //一般放在有效代码的最后,这是由于若主线程ch取的太快的话则协程可能执行不完 fmt.Println("执行结束") }() a := <-ch //若没有上面的协程则程序会阻塞 time.Sleep(time.Second) fmt.Println(a, "程序结束") //死锁,在主线程中向无缓存的channel添加内容或在主线程中向channel添加内容超过channel缓存的个数就会出现死锁 //如:func(){ // ch:=make(chan int) //ch<-1 // } //这种情况在子协程中出现不会影响主线程的正常运行 //若有缓存的channel中不超过最大值则不会出现死锁 //select 简介 ch1 := make(chan int, 1) ch2 := make(chan string, 1) ch1 <- 1 ch2 <- "ksdj" select { //若符合以下条件的不止一个则随机选择一个来执行,若所有条件都不满足也没有default则阻塞 case value := <-ch1: fmt.Println(value) case value := <-ch2: fmt.Println(value) default: fmt.Println("skjd") } //若客户端不停地发消息则用如下结构 ch3 := make(chan int) for i := 0; i < 10; i++ { go func(j int) { ch3 <- j }(i) } for { select { case aa := <-ch3: fmt.Println(aa) default: } }}
转载于:https://www.cnblogs.com/chu-12345/p/11368757.html
知识点 channel的使用相关推荐
- Netty3之ServerBootstrap分析
为什么80%的码农都做不了架构师?>>> 概述 ServerBootstrap是Netty提供的一个服务端工具类,通过设置ChanneFactory,ChannelPipeli ...
- Go 知识点(08) — 对未初始化的 channel 进行读写操作
1. 对未初始化的 channel 进行写操作 先看下面代码 func main() {var ch chan int // 只声明,并没有初始化fmt.Printf("ch is %v\n ...
- Go 知识点(03)— 非缓冲 channel 的长度始终为 0
我们先看下面代码输出通道的长度是多少? func main() {ch := make(chan string)go func() {ch <- "hello"close(c ...
- Go知识点:slice、map、func、struct、method、interface、channel、goroutine
slice 动态索引数组,使用make生效 map 关联数组,使用make生效 struct 相当于类的概念 可以引用其他的接口体,是属性的一个集合 method 继承是直接把接口体写在结构体中即可 ...
- channel小知识点
1.传入channel的值是原来值的备份,从channel中取出来的值也是通道中值的备份. 2.如果想通过channel传送同一个值,那么可以传递这个值的指针 3.关闭channel要从发送端关闭,如 ...
- Go 知识点(09)— for select 作用于 channel
1. for select 作用于未关闭的通道 1.1 没有 default 分之场景 先看下面代码 func main() {ch := make(chan int, 3)go func() {ti ...
- Go 知识点(02)— channel 使用不当导致的 deadlock
运行下面这段代码输出的结果是什么? package mainimport ("fmt" )func main() {c := make(chan string) // 创建一个无缓 ...
- YOLOV4知识点分析(二)
YOLOV4知识点分析(二) 数据增强相关-mixup 论文名称:mixup: BEYOND EMPIRICAL RISK MINIMIZATION 论文地址:https://arxiv.org/ab ...
- Netty Channel源码分析
原文:https://wangwei.one/posts/netty-channel-source-analyse.html 前面,我们大致了解了Netty中的几个核心组件.今天我们就来先来介绍Net ...
最新文章
- 你想了解的Cookie和Session就在这~
- python基础之常用模块
- 登录页面test记录
- flask mvc模式开发_Flask中文文档-转载
- Beta函数与Gamma函数及其与Beta分布的关系
- 如何在脱敏数据中使用BERT等预训练模型
- ltspice滑动变阻器在哪_NB物理创新课堂|变阻器
- 三星on 7刷android7,三星On7(G6100)安卓8.0版官方固件rom刷机包
- C++:建立一个被称为sroot()的函数,返回其参数的二次方根。重载sroot()3次,让它返回整数、长整数与双精度的二次方根
- java飞机订票系统实例_航空客运订票系统JAVA课程设计
- flea-jersey使用之文件上传接入
- 马尔克斯写给读者的告别信
- UWB,可以应用到生活中的方方面面
- 云服务完整删除mysql
- Matlab 实现 数值计算方法 二分法
- Python入门(第一节课)
- 【服务器搭建个人网站】教程二:快速搭建我们服务器 进来看
- VS2019添加git源代码管理-增加VS版本 16.10.4的GIT管理
- Android攻击方式与安全分析
- Unity中自带的第一人称与第三人称视角之间的切换问题