

【笔记】Go语言的管道
source link: https://loli.fj.cn/2023/05/27/Go%E8%AF%AD%E8%A8%80%E7%9A%84%E7%AE%A1%E9%81%93/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

【笔记】Go语言的管道
2023-05-27Go语言学习指北
Go语言的管道(通信)channel学习笔记
管道的特点
- 管道的本质是一种队列数据类型,数据是先进先出的
- 管道是线程安全的,多协程goroutine访问时无需加锁
- 管道定义时需要指定所存储数据的数据类型
声明一个管道
可读写管道
var 管道名 chan 数据类型
var 管道名 chan<- 数据类型
var 管道名 <-chan 数据类型
定义一个管道
- 管道是引用类型数据,必须初始化才能写入数据
- 管道变量实质上是一个指针,这个指针指向的是一个管道的真实地址
- 管道的容量不能自动增长
var 管道名 chan 数据类型 = make(chan 数据类型, 管道容量)
从管道读取数据
变量名 = <-管道名
ok
:读取成功返回true,读取失败返回false,读取失败说明管道已关闭
变量名, ok = <-管道名
获取管道长度
len(管道名)
获取管道容量
cap(管道名)
管道的关闭
- 关闭管道后,不能再向管道中写入数据了,但是可以继续从管道中读取数据
close(管道名)
- 遍历管道之前一定要先关闭,如果管道没有关闭就会一直遍历,直至报deadlock错误
- 如果在遍历时管道已经关闭,则遍历完成后会正常退出遍历
for value := range 管道名 {
...
}
- 如果管道不清楚什么时候关,可以使用
select
关键字防止阻塞
label:
for {
select {
case value := <-管道名:
break
default:
break label
}
}
Recommend
-
134
三维空间画管道主要是用到空间圆参数方程来实现。在拐角的处理方面,暂时只是前后管道预留出一个半径的长度,用贝塞尔曲线进行十均分然后画mesh连接,由于圆的空间参数方程的单位向量的a与b的值是圆的随机值,
-
56
管道符常营命令cut:截取字符串,比如我们要以“:”作为分隔符,取第一列,[root@localhost~]#cat/etc/passwd|head-5|cut-d":"-f1rootbindaemonadmlp这里-d是指定分割符,-f后面接数字,是指截取范围,上面的例子是截取第一段,就输入-f1,如果想截取两段,就用“,”...
-
51
管道符和作业控制、shell变量、环境变量配置文件
-
65
|管道符把前一条命令的结果交给后面的命令wc-l显示行数作业控制ctrl+z暂停fg就是调回暂停的命令jobs可以把已经停止的进程显示出来然后更具ID号调取任务fg调到前台bg放入后台,并运行vmstart1不停的显示系统状态ctrl+z暂停后bg就是把这个放入后台。放入后台,还会继...
-
66
管道符、作业控制管道符 | :把前面命令的的输出交给后面命令的输入暂停任务:ctrl+ z (临时暂停,仍到后台 ,调回前台 fg)jobs 可以把暂停的任务列出来。fg +id号就能把相应暂停任务调回前台。 fg 2bg 把任务放到后台sleep 1000 暂停1000秒sleep 100...
-
62
「流」这个概念在开发中非常常见,在 java 语言里我们熟知InputStream和OutputStream,node 中有WriteStream和ReadStream,cpp 里也有 stre...
-
47
-
20
Go 语言学习笔记 -第8章 Go 语言学习笔记 -第8章 goroutine和通道 CSP并发模型 用于描述两个独立的并发实体通过共享的通讯 channel(管道)进行通信的并发模型 G...
-
6
参考链接: 角度6-管道 Go 语言 协程和管道讲解 一、进程和线程基本说明: 进程是程序在操作系统中一次执行过程,是系统进行资源分配和调度的基本单位;线程是...
-
7
《Unix/Linux编程实践教程》笔记(9)──IO重定向和管道 Unix 默认规定程序从文件描述符0读取数据,写数据到文件描述符1,将错误信息输处到文件描述符2.这三个文件描述符称为标准输入,输出及标准错误输出。 创建系统描述符的系...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK