GO channel

GO语言并发模型CSP: 提倡 通过通信共享内存,而非通过共享内存实现通信

如果说 goroutine是Go程序并发的执行体, channel就是它们之间的连接。 channel是可以让一个 goroutine发送特定值到另一个 goroutine的通信机制

关闭后任然可以读取

执行:

1 true
2 true
0 false

# 无缓冲通道导致异常

执行:fatal error: all goroutines are asleep – deadlock!

原因:ch := make(chan int) 创建的是无缓冲通道,只有在有地接收值时才会发送成功。

# 通道无空间,继续读取

执行:fatal error: all goroutines are asleep – deadlock!

# 关闭后,任往通道发送

执行:

panic: send on closed channel

执行:

接收成功: 10
发送成功

执行:

发送成功

问题:当发送到chan大于其长度,并且没有消费时,造成死锁

执行:

fatal error: all goroutines are asleep – deadlock!

读取对通道a中的数字,在通道b中平方

执行:

0
1
4
9
16

Original: https://www.cnblogs.com/kaituorensheng/p/15863621.html
Author: jihite
Title: GO channel

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/549024/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球