首页 > 其他分享 >Go语言通道详解

Go语言通道详解

时间:2022-12-20 12:56:11浏览次数:35  
标签:元素 发送 排斥 详解 Go 操作 通道

Go语言中的通道相当于一个先进先出的队列, 在Go语言中创建队列的方式是使用make函数, 该函数的第一个参数为通道的类型, 第二个参数是通道的容量, 我们对通道有两种操作分别是发送元素和接收元素操作, 注意这里的发送操作和接收操作都是对我们操作者而言的。

同时如果一个通道的容量为0的时候, 我们称这种通道为非缓冲通道, 否则这种通道为缓冲通道。

package main

import "fmt"

func main() {
	ch1 := make(chan int, 3)
	
	ch1 <- 1
	ch1 <- 2
	ch1 <- 3
	
	elem1 := <- ch1
	fmt.Printf("The first element %d", elem1)
}

关于通道有三个特性:

  1. 互相排斥
  2. 一气呵成
  3. 阻塞

互相排斥指的是每个发送操作之间是有顺序的, 我们需要注意的是发送元素进入通道的元素, 会首先复制一个副本, 然后将这个副本给发送进去。

但是不可能仅仅复制一半后就将它发送进去了, 它一定是一气呵成的。

上面我们说过发送操作之间是有顺序的, 互相排斥的, 如何实现互相排斥, 就是通过阻塞性质, 当第一个发送操作正在进行的时候, 我们会在该发送位置处进行阻塞, 使得其余发送操作不可以进行。

标签:元素,发送,排斥,详解,Go,操作,通道
From: https://www.cnblogs.com/zhengel/p/16993948.html

相关文章

  • kubectl命令详解+证书申请原理
    需要配合老师写的文档一起学习。文档名称叫常见问题排查及提问问题格式lts.docx,可使用everything工具快速查找到该文件。1.1kubectl命令详解参考文档:https://kubernete......
  • python的time模块功能详解
    >>>importtime>>>dir(time)['__doc__','__name__','__package__','accept2dyear','altzone','asctime','clock','ctime','daylight','gmtime......
  • 【Selenium :3种等待方式详解】
    应用场景自动化打开一个网页的时候,内部网页元素加载完全有一点的延迟性,因此在做Web端的自动化测试的时候,一般都需要在测试case时加入一些等待操作。我们常用等待操作有......
  • go使用sync.Pool的性能对比
    在业务代码编码中,涉及到经常用前创建,用后销毁的资源,为了提高性能,减少内存分配,减轻GC压力,自然而然地就会联想到使用对象池的应用。go在很多方面都有着sync.Pool的应用,我们......
  • macOS 应用多开 Google Chrome 应用分身 All In One
    macOS应用多开GoogleChrome应用分身AllInOneGoogleChrome浏览器副本macOSChrome应用分身新建用户数据存放目录#软连接?WindowsChrome应用分身右......
  • Zabbix历史数据与趋势数据问题详解
    众所周知,历史数据(history)和趋势数据(trends)是Zabbix中存储收集到的数据的两种方式。​​官方文档​​显示,Zabbix历史数据是每分钟收集到的监控数据,趋势数据则是按小时统计计......
  • Golang glog使用详解
    ​​golang/glog​​​ 是C++版本 ​​google/glog​​ 的Go版本实现,基本实现了原生glog的日志格式。在Kuberntes中,glog是默认日志库。glog的使用与特性通用功......
  • 分布式计算框架Gearman原理详解
     什么是Gearman?Gearman提供了一个通用的应用程序框架,用于将工作转移到更适合于工作的其他机器或流程。它允许你并行工作,负载平衡处理,并在语言间调用函数。它可用于从高可用......
  • mysql事务隔离级别详解和实战
    A事务做了操作 没有提交 对B事务来说 就等于没做 获取的都是之前的数据但是 在A事务中查询的话 查到的都是操作之后的数据没有提交的数据只有自己看得到,并没有update......
  • 最小二乘法 good
    最小二乘法也称为最小平方法,是一种数据优化技术,它通过最小化误差的平方和寻找数据的最佳函数匹配。最小二乘法最初由高尔顿在创立回归分析的时候提出,现在已经成为探索变量间......