网站首页 > 博客文章 正文
go chan 提供了一种新的共享内存方式, 使用通信来共享内存,而不是使用共享内存来通信(), 使用起来非常简单
c := make(chan int)
<- c
<- c 会阻塞到有数据有数据写入c时才会取消阻塞
那么如何非阻塞地从 chan 中读取数据? go 提供了 select, 可以实现非阻塞读取数据
select {
case <-c :
default:
}
?
当没有default 时, select 是阻塞的,添加default后,如果 c 里面没有数据, select 会立即结束.
如果想等待 <-c 一段时间(如1秒), 有数据写入或超时后再结束,可以使用time.After
?
select {
case <-c:
case <-time.After(time.Second):
}
time.After 会生成一个 <-chan Time, 如果 c 一直没有数据写入,select 会阻塞到 <-chan Time 超时后结束
猜你喜欢
- 2024-10-03 关于go语言中的协程相关知识点总结(三)
- 2024-10-03 详解MS SQL日常维护管理脚本--第二部分
- 2024-10-03 go语言goroutine调度原理以及channel详解
- 2024-10-03 SQL SERVER:索引概述及创建与使用(41)
- 2024-10-03 SQL Server 联接概述(sqlserver连接工具有哪些)
- 2024-10-03 从OOM的角度,带你了解虚拟内存机制
- 2024-10-03 golang开发:select多路选择(golang elseif)
- 2024-10-03 从0开始学Golang编程-基础语法(golang语言基础)
- 2024-10-03 数据库加锁原理举例说明(数据库加锁解锁)
- 2024-10-03 如何正确地使用Go Channel(如何正确地使用教材)
你 发表评论:
欢迎- 最近发表
-
- 告别频繁登录!Nuxt3 + TS + Vue3实战:双Token无感刷新方案全解析
- SpringBoot实现单点登录(SSO)的4种方案
- 随机密聊 匿名聊天室程序源码(随机匿名聊天在线)
- SpringBoot大文件上传卡死?分块切割术搞定GB级传输,速度飙升!
- Java 微服务从源码实战开始 | Gitee 项目推荐
- 轻量级埋点sdk搭建,便捷更全面(埋点sdk是什么)
- Spring Boot 实现文件秒传功能(springboot上传文件到指定文件夹)
- 项目中不用redis分布式锁,怎么防止用户重复提交?
- SpringBoot项目日志打印traceId生成
- 如何实现PC端网站扫码登录操作?(网页 扫码)
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- googlecloud (64)
- flutterrun (59)
- 系统设计图 (58)
- powershellfor (73)
- messagesource (71)
- plsql64位 (73)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- qcombobox样式表 (68)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)