Go语言中关闭带缓冲区的频道实例分析

作者:不是JS 时间:2024-02-20 07:55:16 

本文实例分析了Go语言中关闭带缓冲区的频道。分享给大家供大家参考。具体分析如下:

Go语言提供了两种频道,带缓冲区和不带缓冲区的。不带缓冲区的频道,发送和接收是同步的,必须接收端接收了消息,发送端才能从发送调用中解脱。带缓冲区的频道,在缓冲区满之前,发送和接收是异步的,发送端的发送操作只保证把消息放入缓冲区。

Go的频道是可以关闭的,关闭频道的目的是让接收端知道不会再有消息从这个频道进入,我们可能会用某个频道的关闭来表示某种状态的终结。

当我们关闭一个带缓冲区的频道时,如果缓冲区中还有消息,接收端是会继续接收完剩余消息呢?还是直接就丢弃剩余消息呢?下面是我做的一个试验代码:

package main
import "fmt"
func main() {
    input := make(chan int, 10)
    wait  := make(chan int)
    for i := 0; i < 10; i ++ {
        input <- i
    }
    close(input)
    go func() {
        for {
            if i, ok := <- input; ok {
                fmt.Println(i)
            } else {
                break
            }
        }
        wait <- 1
    }()
    <-wait
}

希望本文所述对大家的Go语言程序设计有所帮助。

标签:Go语言,关闭,频道
0
投稿

猜你喜欢

  • python web.py开发httpserver解决跨域问题实例解析

    2021-02-21 15:44:35
  • 观点 2009 年,IE6 走好

    2009-01-04 16:46:00
  • 深入理解JS中的substr和substring

    2024-04-16 10:29:24
  • HTML编写小经验

    2011-06-14 09:43:14
  • 关注各网站的布局调整

    2008-09-23 18:14:00
  • Tensorflow分类器项目自定义数据读入的实现

    2023-06-21 20:21:53
  • python使用wxPython打开并播放wav文件的方法

    2023-08-23 10:30:58
  • pytorch 实现模型不同层设置不同的学习率方式

    2023-11-20 00:29:25
  • python脚本定时发送邮件

    2023-08-07 16:36:02
  • TF-IDF算法解析与Python实现方法详解

    2021-12-28 02:38:47
  • SWFObject1.5: 基于Javascript的Flash媒体版本检测与嵌入模块

    2009-08-06 18:02:00
  • TensorFlow如何指定GPU训练模型

    2022-05-31 10:03:21
  • Python 可视化matplotlib模块基础知识

    2021-09-09 05:17:45
  • 如何获取当前 select 元素的值

    2010-03-29 13:07:00
  • python3 tkinter实现添加图片和文本

    2022-08-07 04:28:17
  • oracle 服务启动,关闭脚本(windows系统下)

    2024-01-21 08:49:18
  • Javascript的匿名函数

    2008-05-07 13:33:00
  • SQL执行步骤的具体分析

    2024-01-17 15:47:54
  • Vue Render函数原理及代码实例解析

    2023-07-02 16:34:38
  • python3+selenium实现qq邮箱登陆并发送邮件功能

    2023-02-04 17:54:23
  • asp之家 网络编程 m.aspxhome.com