File tree Expand file tree Collapse file tree 2 files changed +9
-10
lines changed
examples/non-blocking-channel-operations Expand file tree Collapse file tree 2 files changed +9
-10
lines changed Original file line number Diff line number Diff line change 36
36
- [x] Channel Directions->通道方向
37
37
- [x] Select->通道选择器
38
38
- [x] Timeouts->超时处理
39
- - [ ] Non-Blocking Channel Operations->非阻塞通道操作
39
+ - [x ] Non-Blocking Channel Operations->非阻塞通道操作
40
40
- [ ] Closing Channels->通道的关闭
41
41
- [ ] Range over Channels->通道遍历
42
42
- [ ] Timers->Timer
Original file line number Diff line number Diff line change 1
- // 常规的通过通道发送和接收数据是阻塞的。然而,我们可以
2
- // 使用带一个 `default` 子句的 `select` 来实现_非阻塞_ 的
3
- // 发送 、接收,甚至是非阻塞的多路 `select`。
1
+ // 常规的通过通道发送和接收数据是阻塞的。
2
+ // 然而,我们可以使用带一个 `default` 子句的 `select`
3
+ // 来实现 _非阻塞_ 的发送 、接收,甚至是非阻塞的多路 `select`。
4
4
5
5
package main
6
6
@@ -10,9 +10,9 @@ func main() {
10
10
messages := make (chan string )
11
11
signals := make (chan bool )
12
12
13
- // 这里是一个非阻塞接收的例子。如果在 `messages` 中
14
- // 存在 ,然后 `select` 将这个值带入 `<-messages` `case`
15
- // 中。如果不是 ,就直接到 `default` 分支中。
13
+ // 这是一个非阻塞接收的例子。
14
+ // 如果在 `messages` 中存在 ,然后 `select` 将这个值带入 `<-messages` `case` 中。
15
+ // 否则 ,就直接到 `default` 分支中。
16
16
select {
17
17
case msg := <- messages :
18
18
fmt .Println ("received message" , msg )
@@ -29,9 +29,8 @@ func main() {
29
29
fmt .Println ("no message sent" )
30
30
}
31
31
32
- // 我们可以在 `default` 前使用多个 `case` 子句来实现
33
- // 一个多路的非阻塞的选择器。这里我们试图在 `messages`
34
- // 和 `signals` 上同时使用非阻塞的接收操作。
32
+ // 我们可以在 `default` 前使用多个 `case` 子句来实现一个多路的非阻塞的选择器。
33
+ // 这里我们试图在 `messages` 和 `signals` 上同时使用非阻塞的接收操作。
35
34
select {
36
35
case msg := <- messages :
37
36
fmt .Println ("received message" , msg )
You can’t perform that action at this time.
0 commit comments