读channel的时候判断其是否已经关闭

_,ok := <- jobs

此时如果 channel 关闭,ok 值为 false

写入channel的时候判断其是否已经关闭

1._,ok := <- jobs

此时如果 channel 关闭,ok 值为 false,如果 channel 没有关闭,则会漏掉一个 jobs

2.使用 select 方式

再创建一个 channel,叫做 timeout,如果超时往这个 channel 发送 true,在生产者发送数据给 jobs 的 channel,用 select 监听 timeout,如果超时则关闭 jobs 的 channel.

go func() {time.Sleep(time.Second * 3)timeout <- true}()
 go func() {for i := 0; ; i++ {select {case <-timeout:close(jobs)returndefault:jobs <- ifmt.Println("produce:", i)}}}()

参考链接:https://blog.csdn.net/u013870094/article/details/78608607

如何判断channel是否已经关闭相关推荐

  1. go 判断channel是否关闭

    结论: 1. go语言无法即时准确地判断channel是否关闭 2. 从channel读取数据     2.1 第二个字段为true时,channel可能没关闭,也可能已经关闭,不能证明什么     ...

  2. java socket 对方关闭_java Socket判断对方是否已关闭连接

    如何判断远端socket是否已经断开连接,如果断开那么需要重新连接. 1通过socket类的方法isClosed().isConnected().isInputStreamShutdown().isO ...

  3. iocp端口断开_在完成端口IOCP模型判断客户端是否已关闭连接(掉线) | 学步园

    判断客户端是否关闭: 1 GetQueuedCompletionStatus 返回 FALSE,根据错误号判断. 2 客户端端定时发送(也就是心跳包判断) 补:GetQueuedCompletionS ...

  4. oracle数据库中is的使用说明,分享数据库工具类DatabaseUtils实现数据库登录验证isUrlValid、数据类型判断isOracle及连接关闭closeDbObject等常见操作...

    一.前言 基于dbcon-5.0.1.jar.zip开源包的数据库工具类uk.ac.sanger.cgp.dbcon.util.DatabaseUtils对数据连接有效关闭closeDbObject. ...

  5. onbeforeunload不触发_用js判断页面刷新或关闭的方法(onbeforeunload与onunload事件)

    Onunload,onbeforeunload都是在刷新或关闭时调用,可以在 Onbeforeunload也是在页面刷新或关闭时调用,Onbeforeunload是正要去服务器读取新的页面时调用,此时 ...

  6. golang channel 管道 通道 信道 使用总结

    不同于传统的多线程并发模型使用共享内存来实现线程间通信的方式,golang 的哲学是通过 channel 进行协程(goroutine)之间的通信来实现数据共享: > Do not commun ...

  7. 深度剖析channel

    深度剖析channel golang     2015-10-29 21:16:25     5740     0     5 channel的用法 channel是golang中很重要的概念,配合g ...

  8. GO并发编程基础- 如何使用channel

    一.channel 入门 1. 什么是 channel 通道,顾名思义,使用来传递数据信号的,和队列类似,有发送端和接收端,也是先进先出的数据结构,通常是在不同的 goroutine 做通信处理,结合 ...

  9. channel的使用总结

    1 channel的使用场景 把channel用在数据流动的地方: 消息传递.消息过滤 信号广播 事件订阅与广播 请求.响应转发 任务分发 结果汇总 并发控制 同步与异步 2 channel的基本操作 ...

  10. 深入了解golang 的channel

    文章目录 1.channel 是什么 channel的特点 2.channel 的数据结构 hchan 等待队列和发送队列的类型包装 sudog 3.channel 分类 有缓冲channel 无缓冲 ...

最新文章

  1. STM32单片机外部中断配置讲解
  2. 用!important解决IE和Mozilla的布局差别(转)
  3. unity windows打包ios_ios打包unity应用以及配置签名!
  4. @angular/compiler-cli@4.3.6 requires typescript@'=2.1.0 2.4.0' but 2.5.2 was found instead.
  5. 谷歌联手马斯克,低延迟星链云计算下半年可用
  6. 图像降噪算法——中值滤波/均值滤波/高斯滤波/双边滤波
  7. why do you want to university of cambridge?
  8. modbus连续读取时数据不正确_维纶触摸屏控制变频器是通过触摸屏与变频器之间的Modbus通信实现...
  9. Systemd管理示例
  10. linux dns服务无效,Linux下搭建DNS服务器及踩坑
  11. 文本自动摘要任务的“不完全”心得总结
  12. 曙光服务器怎么进入bios_曙光服务器怎么进入bios
  13. 【dsp】基于dsp28335的称重系统设计
  14. 开源ITIL框架 php,分享|如何在 CentOS 7 上安装开源 ITIL 门户 iTOP
  15. SD内存卡禁止写入只读怎么办?另类SPI模式修复坏卡
  16. 大数据产品开发流程规范_大数据系统开发步骤流程是怎样的
  17. 【不知道发啥】Win7网页版使用方法
  18. python解压rar
  19. 9月28日科技资讯|华为发布全容器化 5G 核心网;余承东评小米 MIX Aphla 手机无实用价值;PHP 新版本更新
  20. 大数据入门学习:SQL与NOSQL数据库

热门文章

  1. [A133 Android11] 连接pc板子掉电
  2. Android 白天黑夜模式切换
  3. linux设置字符编码gbk,CentOS修改默认字符编码为GBK
  4. app中跳转到手机浏览器,部分手机白屏解决(Vue)
  5. Android 开发笔记___图像按钮__imageButton
  6. win10计算机管理里找不到设备管理器的解决方法
  7. Emacs中学习gdb调试
  8. 删除cortana_如何从Windows 10任务栏中删除Cortana
  9. 阿里云Oss水印图片处理Utils
  10. 多帧图像增强 matlab,MATLAB中图像增强技术的实现