Skip to content

Commit 49bb258

Browse files
committed
1 parent d3c61df commit 49bb258

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

channel.md

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,27 +4,28 @@ go 的有锁数据结构,CSP 概念的组成因子之一。
44
## usage
55
阻塞式 channel :
66
```go
7-
var a = make(chan int)
7+
var a = make(chan int)
88
```
99
非阻塞 channel:
1010
```go
11-
var a = make(chan int, 10)
11+
var a = make(chan int, 10)
1212
```
1313
阻塞和非阻塞关键就在是否有 capacity。没有 capacity 的话,channel 也就只是个同步通信工具。
1414

1515
向 channel 中发送内容:
1616
```go
17-
ch := make(chan int, 100)
18-
ch <- 1
17+
ch := make(chan int, 100)
18+
ch <- 1
1919
```
2020

2121
从 channel 中接收内容:
2222
```go
23-
var i := <- ch
23+
var i := <- ch
2424
```
25+
2526
关闭 channel:
2627
```go
27-
close(ch)
28+
close(ch)
2829
```
2930

3031
在 channel 关闭时自动退出循环
@@ -47,9 +48,12 @@ func main() {
4748
```
4849
注意,len 和 cap 并不是函数调用。编译后是直接去取 hchan 的 field 了。
4950

51+
## closed channel
52+
5053
## nil channel
5154
不进行初始化,即不调用 make 来赋值的 channel 称为 nil channel:
5255
```go
56+
var a = chan int
5357
```
5458

5559
# 源码分析
@@ -155,5 +159,5 @@ func makechan(t *chantype, size int) *hchan {
155159

156160

157161
<!--stackedit_data:
158-
eyJoaXN0b3J5IjpbMTMzNDM3MjQxLDEzNzg3NTI4ODNdfQ==
162+
eyJoaXN0b3J5IjpbLTIwMjQyMTI4NzgsMTM3ODc1Mjg4M119
159163
-->

0 commit comments

Comments
 (0)